Защита сайта от SQL инъекции
Статьи / Hi-Tech / Информ. технологии (IT)
В последнее время все чаще и чаще поднимаются вопросы защиты своих веб-сайтов на различных форумах для веб-мастеров. Это конечно всегда было, но последние волнения связаны со недавней чередой взломов сети SONY. Никто не знает сколько их было и неизвестны также масштабы потерь, потому как точной информации никто не предоставляет. Точно известно о взломах трех сайтов. Сбоев в системе защиты не было, всему виной стала обычная уязвимость, которой страдают сайты с интегрированными базами данных - SQL инъекция.
SQL инъекцией называется процесс изменения структуры SQL запроса к базе данных нелегитимным пользователем. Злоумышленник методом подбора выполняет нужные ему запросы и узнает информацию о структуре баз данных, версии приложений, логины и пароли пользователей. Все эти операции можно выполнить из-за внедрения в строку запроса обычного знака кавычки. Как известно SQL запрос в PHP скриптах записывается внутри кавычек, одинарных или двойных. Поэтому, если в запросе используется переменная, получаемая извне (т.е. от пользователя), злоумышленник подставляет в нее кавычку, завершая этот запрос и открывает новый, который будет закрыт уже имеющейся в скрипте кавычкой.
Написано довольно сложно, оно и понятно, что неподготовленному пользователю сразу будет не понятен весь алгоритм. Чтобы подробнее узнать про SQL инъекцию советую почитать тут. На этом сайте много полезных статей по программированию и защите скриптов на PHP, MySQL, AJAX и прочих языках программирования.
Для тех, кто не любит много читать и вдаваться в подробности, а хочет просто узнать как защититься от SQL инъекции, есть отличная функция mysql_real_escape_string(). Обрабатывая переменные этой функцией вы можете гарантированно избавиться от подобных ошибок. Возникает резонный вопрос, если все так просто, почему же такие, казалось бы, представительные сайты SONY могли быть взломаны? Все дело в том, что об этом часто забывают и оставляют переменные в том виде, в каком они поступают от пользователя. Обычно это возникает при доработке приложений или страниц, особенно если эти доработки выполняются не теми людьми, которые писали изначальную версию. Но даже от этого есть защита! Следует просто взять себе за правило обрабатывать все запросы к базам данных этой функцией. ВСЕГДА! И не при каких обстоятельствах не отступать от этого правила. Все же очень просто.
И на последок маленькая рекомендация: займитесь безопасностью сайтов, которые у вас есть, и проверьте их на предмет данной уязвимости, а то возможно завтра будет уже поздно!