Уязвимости SQL



Защита сайта от sql инъекций

SQL-инъекции — встраивание вредоносного кода в запросы к базе данных — наиболее опасный вид хакерских атак. С использованием SQL-инъекций злоумышленник может получить информацию из базы данных, но и внести туда изменения.

Уязвимость к SQL-инъекциям возникает из-за того, что пользовательская информация попадает в запрос к базе данных без должной обработке.

Для защитыа от sql инъекций php, нобходимо выполнять условие — все пользовательские данные попадают во все запросы к базе данных в экранированном виде. Ошибка в одном скрипте делает уязвимой всю систему.

Сайты с уязвимостью sql

Низкая квалификация программиста php и невнимательность, вот две причины написания кода, уязвимого для SQL инъекций.

Вот по этой причине на серезные проекты привлекаются высококласные программисты. Но в любом случае каждому проекту нужен аудит и проверка безопасности сайтана. Недостаточная проверка и обработка данных, передаваемых от пользователя, и позволяет модифицировать и выполнять непредвиденные кодом программы SQL запросы.

Защита веб приложений 

В своей системе для безопасности сайта и защите веб-приложений, придерживайтесь следующих простых правил организации обмена с базой:

Не доверяйте любым данным, которые приходят от пользователя. Это данные: $_GET и $_POST, $_COOKIE и другие части HTTP-заголовков.

Опцию PHP «magic quotes» не защищает на 100% базу. Все данные, которые передаются в базу данных должны быть по типам с полями

базы данных. ($id= (int)$_GET['id']) или защищены функциями mysql_escape_string или mysql_real_escape_string.

mysql_real_escape_string не экранирует % и _, поэтому не стоит ее использовать в паре с LIKE.

mod_rewrite это способ для создания удобной адресации, но не способ защиты от SQL-инъекций.

Отключите вывод информации об ошибках. Не помагайте хакерам. Отсутствие информации о ней серьезно затруднит ее применение злоумышленниками.

Напишите обработку SQL запросов таким образом, чтобы информация о них сохранялась в логах.

Не сохраняйте данные доступа к базе данных в файлах, которые не обрабатываются как PHP код.

Не создавайте super-user базы данных. Предоставляйте права, необходимые для выполнения конкретных задач. Не предоставляйте избыточные права к базе.

В поиске обязательно нужно ограничить минимальное и максимальное количество символов, Достаточно от 3-х до 60-70 символов.

Всегда проверяйте количество возвращенных записей после проведения запроса