Я читал об атаках SQL-инъекций и о том, как их избежать, хотя я никогда не могу заставить "ужасные" примеры дать работу, например. см. это сообщение.
Я создал файл PHP и таблицу в базе данных, имел значение, прошедшее через $_GET
, и попытался удалить таблицу, выполнив bob'); drop table students; --
, и это не сработало. PHP автоматически ускользает от \'
, и запрос имеет ошибку, без вреда. Такая же проблема при попытке репликации "атак" входа, таких как AND WHERE 1=1
и т.д.
пример кода:
<?php
$id = $_GET['id'];
$sql = "INSERT INTO Users (Username) VALUES ($id)";
echo $sql;
mysql_query($sql) or die(mysql_error());
И я бы прошел sql.php?id=1); delete from Users; --
Итак, это какая-то датированная вещь, которая раньше применялась во времена PHP3 или что-то еще, а теперь даже новички защищены от таких вещей, как волшебные кавычки?
Я использую PHP5 на Ubuntu.