Задать вопрос
petushok55
@petushok55
Обучаюсь на практике.

Возможна ли sql инъекция?

$string = 'любой текст для проверки инъекции';
  $string = trim($string);
  $string = mysql_escape_string($string);
  $string = htmlspecialchars($string);
  mysql_query('INSERT INTO `test` (`inject`) VALUES ("'.$string .'")');


Лично я сам проверял по разному, но всё удачно вставляет, то есть без ошибок
  • Вопрос задан
  • 872 просмотра
Подписаться 1 Простой 9 комментариев
Ответ пользователя rPman К ответам на вопрос (3)
@rPman
почти наверняка будут глюки при использовании utf8 или любой другой мультибайтовой кодировки, и формировании строки с неправильной комбинацией символов, так как mysql_escape_string не будет их считать опасными (она вообще только для однобайтовых кодировок).

Чтобы воспользоваться уязвимостью нужно серьезно зарыться в исходники php или mysql и понимать как обрабатываются ими мультибайтовые кодировки.

Если ты вынужден поддерживать устаревший код, поставь в самом начале кода проверки на входящие параметры, по значению. Почти наверняка можно собрать под используемый язык пользователей простую функцию валидации, а лучше сразу конвертировать в мультибайтовую кодировку и в этот момент проводить все необходимые проверки.
Ответ написан