jokester я не могу сказать какой точно код, так как не вижу его, но могу рассказать тебе историю:
Есть код, допустим он выглядит следующем образом:
Код:
<?
// Начало скрипта
...
// Скрипт получает переменную из формы, допустим <input name="pass" type="password">
$pass = $_POST['pass'];
// Здесь идет проверка/заменна символов у переменной $pass, допустим определим проверку функцией:
function ReRe($re) {
$re = preg_replace("/'/", "\\", $re);
$re = preg_replace("/\"/", "\\", $re);
$re = preg_replace("/</", "", $re);
$re = preg_replace("/>/", "", $re);
$re = preg_replace("/\//", "", $re);
$re = preg_replace("/:/", "", $re);
$re = preg_replace("/\./", "", $re);
return $re;
}
// Дальше скрипт выполняет запрос к БД, и вот его у меня нету
...
// Конец скрипта
?>
Если смотреть по выдачи ошибки MySQL, то получается следующее:
Код:
SELECT * FROM passwords where (pwd = '$pass' or pwd = '$pass' or pwd = '$pass') and dateend>='1235374244'
Т.е. если в поле вставить допустим ' (апостроф), то скрипт выдает следующую ошибку:
Код:
MySQL Error!
------------------------
The Error returned was:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\' or pwd = '\') and dateend>='1235374381'' at line 1
Error Number:
1064
SELECT * FROM passwords where (pwd = '\' or pwd = '\' or pwd = '\') and dateend>='1235374381'
Я в растерянности даже не знаю, что сделать, от безысходности даже пытался апостроф заменить на
&apos (теоретически прокатывает) и запрос типа:
pass&apos) or 1=1#' принимает радостный вид:
Код:
SELECT * FROM passwords where (pwd = 'pass') or 1=1#\' or pwd = 'pass')' or pwd = 'pass') ') and dateend>='1235374814'
Но глаз режет информация о синтаксической ошибке:
Код:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'pass')' or pwd = 'pass') ') and dateend>='1235374941'' at line 1
Вот такая вот печальная история с трагическим концом.

Как думаете дети, в чем автор
допустил ошибку?