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'

Что значительно увеличивает уровень безопасности.

Ответы (0)