Оригинальный пример можно найти Вот:
Резюме
Элемент формы:
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
Часть вредоносного кода, введенная кем-то в адресную строку браузера: http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E
В примере говорится, что элемент формы будет преобразован в следующее:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>
Пока я понимаю, я не понимаю, почему
Должно быть, я неправильно понял некоторые концепции. Пожалуйста, поправьте меня. Спасибо
Это даже работает, когда веб-адрес не существует. Разве этот человек не должен получить какую-то страницу с ошибкой, говорящую, что веб-сайт не может быть найден? Например, когда мы случайно набрали неправильный адрес и ничего не получили?
Нет, если веб-сервер настроен на разрешение дополнительных данных после пути сценария. В Apache это настраивается Директива AcceptPathInfo.
Несмотря на то, что это работает, как кто-то еще, кроме самого «хакера», может повлиять, если изменения не сохраняются в файле php на сервере? Я имею в виду, что именно хакер вручную ввел вредоносный код, и именно его браузер загрузит уязвимую веб-страницу.
Атака XSS потребует от злоумышленника заставить цель посетить этот URL, чтобы вредоносная полезная нагрузка запускалась в браузере цели. Один из способов сделать это — обмануть цель, щелкнув по вредоносной ссылке.
Других решений пока нет …