Безопастный Php

Discussion in 'Безопасность и Анонимность' started by truelamer, 26 Jan 2008.

  1. truelamer

    truelamer Elder - Старейшина

    Joined:
    6 Nov 2007
    Messages:
    135
    Likes Received:
    30
    Reputations:
    5
    Скажите пожалуйста как правильно писать с точки зрения безопастности когда принимаешь параматры из пост или гет и обьясните почему:
    так...

    if(IsSet($_POST[id]))
    {
    $id=$_POST[id];
    if($id)
    {
    //cod
    }
    else
    {
    //cod
    }
    }

    или так

    if($POST[id]==1)
    {
    //code
    }
    else
    {
    //code
    }
     
  2. MaDfUn

    MaDfUn Elder - Старейшина

    Joined:
    2 Feb 2007
    Messages:
    28
    Likes Received:
    10
    Reputations:
    0
    помоему в данной ситуации оба примера одинковые, развечто 2 попроще.
     
  3. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    смотря что ты потом будешь делать с этим параметром
     
    1 person likes this.
  4. gibson

    gibson Elder - Старейшина

    Joined:
    24 Feb 2006
    Messages:
    391
    Likes Received:
    247
    Reputations:
    88
    Есть же специальная тема там нельзя было задать это вопрос?
    if(IsSet($_POST['id'])) - проверяет установленна или переменная, если да то возвращяет true приводишь к определенному типу $id=$_POST['id']; - числовому, строковому и проверяешь на запрещенные символы.
    if($_POST['id']==1) здесь у тебя просто сравнивает с единицей
    все зависит от способа фильтрации гет/постов, а не от способа их получения.
    Литературу ничего не рекомендую, т.к. видимо ты хрен что поймешь, а перепечатывать их каждый раз влом, задавай вопросы что не понятно.
     
  5. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    809
    Reputations:
    231
    Обработай полученные значения...
    http://ru2.php.net/filter
     
    _________________________
  6. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    Если id не передается в форму POST'ом, то будет ошибка. Поэтому надо проверять ее наличие.
     
  7. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Если так сделаешь и если переменная $id у тебя скармливается базе данных, то получишь классический вариант SQL-инъекции. Чтобы этого избежать, нужно
    PHP:
    $id=$_POST[id];
    заменить на
    PHP:
    $id=mysql_real_escape_string($_POST['id']);
    если база на мускуле. Если PostgreSQL, то вместо mysql_real_escape_string юзай pg_escape_string (ну или addslashes). Если же данные, переданные пользователем скрипту, не передаются в БД, а выводятся на страницу, то можешь получить XSS на странице. Фильтруй так
    PHP:
    $id=htmlspecialchars($_POST['id']);
    Вообще по защите php-скриптов на форуме достаточно тем, use search
     
  8. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    krypt3r, это нужно использовать толькоко при добавлении в базу. И то не всегда, т.к. практически любой класс работы с БД имеет свои механизмы для сабжа.