Ответы пользователя по тегу PHP
  • Как защитить сайт от 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 комментария
  • DDoS - как уменьшить нагрузку на php?

    @Ajex
    Достаточно простой и действенный и универсальный метод — в коде html устанавливаете яваскриптом любую куку. В index.php в самом начале добавляете банальный код

    if (!isset($_COOKIE['mycookie'])) {exit;}

    как вариант можете в добавок к exit добавить функцию добавления ипа в черный список фаерволла(можно временный через ipset), в случае если кто-то пришел не через куку.
    Правда нужно немного переделать структуру сайта так, чтобы первый раз пользователь заходил на хтмл страницу, которая будет ставить куку, а уж потом по ссылке на пхп.
    Если это невозможно, тогда как-то так:

    if (!isset($_COOKIE['mycookie']))
    {
    setcookie('mycookie','some_cookie_text',time()+60*60*24*300,"/",".адрессайта.домен");
    echo 'Для входа на сайт перейдите по ссылке';
    exit;
    }

    в таком случае все новые пользователи будут видеть ссылку «Для входа на сайт перейдите по ссылке», а после ее нажатия получать куку и заходить на сайт.
    Ответ написан
    2 комментария
  • Посоветуйте CMS

    @Ajex
    LiveStreet? По-моему как раз то что нужно. Стандартно используются популярные фреймворки. Плугинами дописывай что хочешь, там достаточно просто все.
    Ответ написан
    2 комментария