В чем преимущество использования суперглобального `$_SERVER['PHP_SELF']` в PHP?

В чем преимущество использования суперглобальных $_SERVER['PHP_SELF']?

1 ответ

$_SERVER['PHP_SELF'] не включает (или не должна включать) доменное имя. Он включает компонент пути URL, из которого был вызван скрипт.

Его использование в первую очередь для введения уязвимостей межсайтового скриптинга.

Вы можете использовать его для заполнения атрибута действия тега формы:

<form method="post" action="<?=$_SERVER['PHP_SELF']?>"></form> 

Если я тогда позвоню на вашу страницу с:

your-file-that-uses-php-self.php/("><script>eval-javascript-here</script>)

где все в паренах закодировано в урлен, тогда я могу ввести код на вашу страницу. Если я отправлю эту ссылку кому-то еще, я выполняю этот код в их браузере с вашего сайта.

Редактировать: чтобы обезопасить себя от атак XSS, используйте htmlspecialchars:

<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">...</form> 

Редактировать 2: как это $_SERVER Переменная использовалась так часто там, в примерах через интернет, не пропустите чтение вашей HTML-ссылки: поскольку этот URI является кратчайшим возможным относительным URI, вы можете просто оставить атрибут действия пустым:

<form action="" method="post" >...</form>
Другие вопросы по тегам