В чем преимущество использования суперглобального `$_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>