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

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

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


Лично я сам проверял по разному, но всё удачно вставляет, то есть без ошибок
  • Вопрос задан
  • 856 просмотров
Решения вопроса 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Нет.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Возможна.

Почему не стоит использовать mysql_escape_string
https://www.php.net/mysql_escape_string
Warning
This function was deprecated in PHP 4.3.0


https://www.gosecure.it/blog/art/483/sec/mysql_esc...

Не хотите SQL-инъекций используйте подготовленные выражения (prepared statements)
https://www.php.net/manual/en/mysqli.quickstart.pr...

а был бы с нами FanatPHP он бы ещё дал ссылку почитать https://phpfaq.ru/mysql/slashes
Ответ написан
@rPman
почти наверняка будут глюки при использовании utf8 или любой другой мультибайтовой кодировки, и формировании строки с неправильной комбинацией символов, так как mysql_escape_string не будет их считать опасными (она вообще только для однобайтовых кодировок).

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

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

Войдите, чтобы написать ответ

Похожие вопросы