Ответы пользователя по тегу SQL
  • Как защитить сайт от SQL-инъекций? Атакуют, заливают шеллы и всякую гадость. Нужен сканер

    @Ajex
    Все — никак. Самый лучший способ изначально организовать логику работы так, чтобы все обработка переменных происходила по одинаковым принципам во всех модулях.
    Когда на каждой странице своя проверка, очень велика вероятность, что что-то забудете и пропустите.
    Также, думаю, не само собой разумеющееся, что для обращения к БД не стоит работать напрямую, а использовать специальные фрейморки, в которых заложен дополнительный слой проверок. Например PDO или аналоги.
    Для поиска уязвимостей есть специальные сканеры, например Acunetix, havij… вот тут неплохой обзор habrahabr.ru/post/125317/
    Однако ни один сканер не найдет все уязвимости, ибо они могут быть совершенно не очевидными.

    К примеру, даже если вы сюда воткнете проверку, это не защитит от уязвимости при включенных register_globals
    if($_REQUEST[xid]) $id = (int)$_REQUEST[xid];
    ибо переменную id можно просто передать в параметрах, а про xid просто напросто «забыть». Тогда в $id уже можно будет передать что угодно.
    Т.е. правильный код в данном случае будет каким-то таким
    if (!isset($_REQUEST[xid])) {die(); } $id = (int)$_REQUEST[xid];
    Ответ написан
    4 комментария