1

Вот минимальный рабочий пример проблемы, которую я имею. Я знаю, что к настоящему моменту ошибка, похоже, характерна для моего сервера / установки, но мне все еще интересно, что происходит. Есть два файла, m1.php и m2.php:

m1.php

<form action="m2.php" method="post">
<br> <input type="text" name="j" />
<input type="submit"  VALUE="Ok"  />
</form>

m2.php

<?php  
print_r($_POST);
?>

Все работает как положено (когда вы нажимаете ОК, он печатает массив со значением из поля ввода) с этим исключением: если строка, которую я печатаю,

VALUE';WAITFOR DELAY '00:00:24';--

форма не обрабатывается. Удаление только одного символа из приведенной выше строки работает без проблем.

Проверка журналов сервера, когда указанная выше строка является входной, в журнале не появляется запрос POST, в то время как он поступает с любой другой строкой, которую я могу придумать. Проблема, похоже, на стороне сервера, так как Fiddler показывает POST-запрос с содержимым

j=VALUE%27%3BWAITFOR+DELAY+%2700%3A00%3A24%27%3B--

и я мог бы воспроизвести его в разных браузерах с разных платформ. Это проблема с Apache? Может быть, php? Как я мог сказать?

Я обнаружил это во время аудита безопасности на веб-сайте. Сервер SQL не запущен, но аудит сообщает об этой проблеме. И мне любопытно, почему именно эта строка вызывает такое поведение.

Редактировать: в случае, если кому-то интересно, я просто заметил, что описанное выше поведение вообще не зависит от кода php. Фактически, если я отправлю через Fiddler POST-запрос на несуществующую страницу на моем сервере, если содержимое публикации содержит поле с вышеупомянутой строкой, запрос остается без ответа. Так что, похоже, это проблема Apache.

0