Php инъекция как сделать
Изучаем, что такое PHP инъекция и как ее применить. Даем пример и проверяем его работоспособность. Помогаем защититься от атак через инъекции.
PHP инъекция
PHP-инъекция - это метод хакерского взлома сайта, который заключается в внедрении специально сформированных данных в переменные или параметры, используемые для генерации динамических web-страниц. Поскольку инъекции полностью зависят от того, как разработчики программируют свои веб-сайты, инъекции часто становятся проблемой для пользователей в целом.
Хакер может использовать инъекции, чтобы получить доступ к системе или данным пользователей, используя код или команды, направленные на веб-сервер. Например, хакер может использовать инъекцию, чтобы запустить произвольный код на компьютере, на котором размещен веб-сайт, или использовать инъекцию, чтобы получить доступ к базе данных или другим файлам на сервере.
Чтобы защитить сервер от инъекций, обычно применяют паттерны программирования, предотвращающие использование переменных пользовательского ввода. В PHP-коде это можно сделать, используя функцию addslashes()
, которая добавляет обратные слеши к кавычкам и другим специальным символам. Например, приведем пример инъекции, которая может быть использована для получения доступа к системе:
$user = $_POST['username'];
$pass = $_POST['password'];
$query = "SELECT * FROM users WHERE username = '$user' AND password = '$pass'";
$result = mysql_query($query);
Как видно из приведенного выше примера, переменная $user
и $pass
принимает данные из формы. В таком случае, если пользователь введет в поле username значение admin'--
, то запрос будет иметь следующий вид:
SELECT * FROM users WHERE username = 'admin'--' AND password = '$pass'
В этом примере всё, что идет после двух дефисов, будет игнорироваться, поэтому запрос будет выглядеть так:
SELECT * FROM users WHERE username = 'admin'
Таким образом, пользователь получит доступ к системе без необходимости вводить правильный пароль. Чтобы предотвратить такие инъекции, необходимо использовать функцию addslashes()
, чтобы добавить обратные слеши к кавычкам и другим символам:
$user = addslashes($_POST['username']);
$pass = addslashes($_POST['password']);
$query = "SELECT * FROM users WHERE username = '$user' AND password = '$pass'";
$result = mysql_query($query);
Таким образом, теперь код при введении значения admin'--
в форму будет выглядеть так:
SELECT * FROM users WHERE username = 'admin'--' AND password = '$pass'
Что значительно увеличивает уровень безопасности.