фильтрация данных на пхп

Discussion in 'PHP' started by Piflit, 1 Jan 2008.

Thread Status:
Not open for further replies.
  1. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    Скрипт работает с mysql. Ему передаются данные типа ников, затем другой скрипт их выводит, т.е. обрезать все спецсимволы нельзя. + нужна поддержка кириллицы. У меня есть два варианта.
    1. htmlspecialchars + strip_tags + регулярка (как задать кириллицу? [а-яА-я]?). Тогда какие спецсимволы нужно фильтровать? Я думаю, в самих скриптах не может быть inj, т.к. там используется только insert и select(парамерты жестко заданы), но интересен сам способ.
    2. Перед записью конвертить все через ord, а перед выводом chr.

    Для защиты от xss достаточно htmlspecialchars() или нужно что-то еще?
     
    2 people like this.
  2. Macro

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

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    Достаточно сделать htmlspecialchars() и фильтр от кавычек и все. Никаких xss или sql inj не получится
     
    3 people like this.
  3. OptimaPrime

    OptimaPrime Banned

    Joined:
    30 Mar 2007
    Messages:
    307
    Likes Received:
    588
    Reputations:
    -61
    Ога Макро прав htmlspecialchars() хватит
     
    1 person likes this.
  4. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Зависит всё же от того, где они выводятся.
    Кодировку нужно указать в явном виде против Utf-7
     
    1 person likes this.
  5. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    $var = htmlspecialchars($var);
    $var = ereg_replace("((\'\")+)", "", $var);

    так?

    Выводятся в виде хтмл кода.
    Где указать кодировку?
     
    #5 Piflit, 1 Jan 2008
    Last edited: 1 Jan 2008
  6. Macro

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

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    Можно проще.

    PHP:
    $var htmlspecialchars($var);
    $var str_replace("'","",$var);
     
  7. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Охохо...если вы думаете что htmlspecialchars спасает от всего, то вы горекодеры...
     
  8. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    заинтриговал...
     
  9. OptimaPrime

    OptimaPrime Banned

    Joined:
    30 Mar 2007
    Messages:
    307
    Likes Received:
    588
    Reputations:
    -61
    ну на сколько я знаю htmlspecialchars спасает от скулей и икссс
     
  10. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    а я ничего не знаю =\
     
  11. OptimaPrime

    OptimaPrime Banned

    Joined:
    30 Mar 2007
    Messages:
    307
    Likes Received:
    588
    Reputations:
    -61
    вобщем ты получил ответ на свой вопрос,если что пусть Исис расскажет что оон хотел сказать...)
     
    1 person likes this.
  12. Macro

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

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    Угу, а ты попробуй обойди htmlspecialchars, хватит тут выпендриваться.
     
    1 person likes this.
  13. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Указать кодировку в мета-тэге, например:
    Code:
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    Я имел ввиду, что они могли быть:
    - в тэге <title>,
    - в тэгах <div>, <span>, и т.д,
    - в тэгах <style>, <script> (omg),
    - в названии атрибута тэга,
    - в значении атрибута тэга.
    От этого зависят правила фильтрации.
     
  14. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    ничего такого нет.

    а вдруг я сделаю, а исис меня похекает? :(

    с кавычками так?
    PHP:
    $var str_replace('"'""$var);
    $var str_replace("'"""$var);
    зы у меня кодировка windows-1251
     
    #14 Piflit, 1 Jan 2008
    Last edited: 1 Jan 2008
  15. Macro

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

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    В принципе, если я правильно помню, атака с помощью utf-7 может быть только там, где не установлена кодировка в хедере, в мета-тегах и utf-7 идет с самого начала, иначе кодировкой данной страницы считается кодировка первого встреченного текста. Я прав?
     
  16. OptimaPrime

    OptimaPrime Banned

    Joined:
    30 Mar 2007
    Messages:
    307
    Likes Received:
    588
    Reputations:
    -61
    непохекает,мы его подкупим))
     
  17. Macro

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

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    Если ты параноик, юзай перед добавлением base64_encode, а перед выводом - htmlentities( strip_tags(base64_decode()),ENT_QUOTES)
     
  18. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    лично я против xss использую не только htmlspecialchars() но и stripslashes()
    а против sql-inj
    PHP:
    $_POST['a'] = str_replace("'",""$_POST['a']);
    $_POST['a'] = str_replace("&",""$_POST['a']);
    $_POST['a'] = str_replace("+","",$_POST['a']);
    $_POST['a'] = str_replace("/","",$_POST['a']);
    $_POST['a'] = str_replace("*","",$_POST['a']);
    фильтрация символов ' & + / * вполне имхо достаточна
     
    2 people like this.
  19. Macro

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

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    $var=stripslashes(htmlentities($var, ENT_QUOTES));
    И никаких sql inj и xss быть не может
     
    2 people like this.
  20. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,029
    Reputations:
    1,228
    нуну, а если код типа
    PHP:
    $query="select hek_title,hek_header,hek_footer from hek_temp where hek_id=".$_POST['id'];
    ?)

    при
    Code:
    id=-1 union select hek_name,hek_password,hek_mail from hek_users
    всё будет норм выполняться
     
    _________________________
Thread Status:
Not open for further replies.