Цель внедрения MySQL — захватить базу данных веб-сайта и украсть информацию. Общие базы данных с открытым исходным кодом, такие как MySQL, используются многими разработчиками веб-сайтов для хранения важной информации, такой как пароли, личная информация и административная информация.
MySQL популярен, потому что он используется с самым популярным серверным языком сценариев PHP. Более того, PHP является основным языком сервера Linux-Apache, который доминирует в Интернете. Таким образом, это означает, что хакеры могут легко использовать PHP так же, как шпионское ПО для Windows.
Хакеры вводят большое количество вредоносного кода в незащищенную веб-форму (через раскрывающиеся меню, поля поиска, контактные формы, формы запросов и флажки).
Вредоносный код будет отправлен в базу данных MySQL, а затем «внедрен». Чтобы просмотреть этот процесс, сначала рассмотрим следующий базовый оператор запроса MySQL SELECT:
SELECT * FROM xmen WHERE username = 'wolverine'
Этот запрос попросит базу данных с таблицей «xmen» вернуть определенный фрагмент данных с именем пользователя «росомаха». в MySQL.
В веб-форме пользователь введет росомаху, и эти данные будут переданы в запрос MySQL.
Если введенные данные недействительны, у хакеров есть другие способы получить контроль над базой данных, например, установка имени пользователя:
' OR ''=''
Вы можете подумать, что безопасно использовать обычный синтаксис PHP и MySQL для выполнения ввода, потому что каждый раз, когда кто-то вводит вредоносный код, он будет получать сообщение «неверный запрос», но это не так. Хакеры умны, и любую дыру в безопасности исправить нелегко, поскольку это требует очистки базы данных и сброса административных привилегий.
Два распространенных заблуждения относительно атак путем внедрения MySQL заключаются в следующем:
1. Сетевые администраторы полагают, что вредоносные внедрения можно устранить с помощью антивирусного или антишпионского программного обеспечения. Дело в том, что этот тип заражения использует слабые места в базе данных MySQL. Его невозможно просто удалить с помощью любой антишпионской или антивирусной программы.
2. MySQL-инъекция происходит при копировании зараженного файла с другого сервера или внешнего источника. Это не так. Этот тип заражения происходит, когда кто-то вводит вредоносный код в незащищенную форму на веб-сайте, а затем получает доступ к базе данных. MySQL-инъекцию можно очистить, удалив вредоносный скрипт, а не используя антивирусную программу.
Процесс проверки введенных пользователем данных
создает резервную копию чистой базы данных и помещает ее с сервера. Экспортируйте набор таблиц MySQL и сохраните их на рабочем столе.
Затем перейдите на сервер и сначала временно отключите ввод формы. Это означает, что форма не может обработать данные, и веб-сайт закрывается.
Затем запустите процесс очистки. Во-первых, на своем сервере очистите все оставшиеся беспорядочные инъекции MySQL. Измените все пароли к базе данных, FTP и веб-сайтам.
В худшем случае, если вы опоздаете с очисткой, вы можете дважды проверить наличие скрытых программ, работающих на вашем сервере. Эти скрытые программы представляют собой трояны, установленные хакерами. Удалите его полностью и измените все разрешения FTP. Просканируйте сервер на наличие всех троянов и вредоносных программ.
Когда вы изменяете программу PHP-скрипта, данные формы будут обработаны. Хороший способ предотвратить внедрение MySQL — даже не доверять пользовательским данным. Проверка пользовательского ввода очень важна для предотвращения внедрения MySQL.
Вот несколько советов по созданию фильтра для фильтрации вводимых пользователем данных:
1. Вводимыми данными в форме являются числа. Вы можете убедиться, что это число, проверив, что оно равно или больше 0,001 (при условии, что вы не принимаете ноль).
2. Если это адрес электронной почты. Проверьте, состоит ли он из разрешенных комбинаций символов, таких как «@», AZ, az или некоторых цифр.
3. Если это имя человека или имя пользователя. Его можно проверить, если он содержит какие-либо недопустимые символы, такие как и и *, которые являются вредоносными символами и могут использоваться для внедрения SQL.
Проверка ввода числовых данных
Следующий сценарий проверяет правильность ввода числа от 0,001 до бесконечности. Стоит отметить, что в программе PHP можно даже разрешить использование чисел в определенном диапазоне. Используйте этот сценарий проверки, чтобы убедиться, что в форму введено только число.
Предположим, в вашей программе есть три числовые переменные, которые вам нужно проверить, назовем их num1, num2 и num3:
//Проверка числового ввода;
if($_POST['num1'] >= 0.001 && $_POST['num2'] >= 0.001 && $_POST['num3'] >= 0.001){
}else{
}
?>
И условие может быть расширено для размещения более трех номеров. Итак, если у вас 10, вам нужно будет только расширить оператор AND.
Это можно использовать для проверки формы, которая принимает только цифры, такие как количество контрактов, номера лицензий, номера телефонов и т. д.
Проверка ввода текста и адреса электронной почты
Для проверки вводимых данных формы, таких как имена пользователей, имена и адреса электронной почты, можно использовать следующее:
//Проверка ввода текста
if (! preg_match('/^[-az.-@,'s]*$/i',$_POST['name'])){
}
elseif ($empty==0){
}else{
}
?>
Одним из преимуществ этого сценария проверки является то, что он не принимает пустые входные данные. Некоторые злоумышленники также манипулируют базами данных, вводя пустые данные. Используя приведенный выше сценарий, проверьте только одну литеральную переменную, «$name». Это означает, что если у вас есть три текстовые переменные, вы можете настроить сценарий проверки для каждой переменной, чтобы гарантировать, что каждая переменная пройдет проверку перед входом в базу данных.