$_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>