当您将ANY变量插入 HTML 时,除非您希望浏览器将变量本身解释为 HTML,否则最好htmlspecialchars()
在其上使用。除此之外,它还可以防止黑客在您的页面中插入任意 HTML。
的值$_SERVER['PHP_SELF']
直接取自在浏览器中输入的 URL。因此,如果您不使用htmlspecialchars()
.
例如,如果我通过电子邮件向您发送一个链接http://example.com/"><script>malicious_code_here()</script><span class="
并且您拥有<form action="<?php echo $_SERVER['PHP_SELF'] ?>">
,则输出将是:
<form action="http://example.com/"><script>malicious_code_here()</script><span class="">
我的脚本将运行,而您将一无所获。如果您已登录,我可能已经窃取了您的 cookie,或者从您的页面上抓取了机密信息。
但是,如果您使用<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>">
,输出将是:
<form action="http://example.com/"><script>cookie_stealing_code()</script><span class="">
当你提交表单时,你会有一个奇怪的 URL,但至少我的邪恶脚本没有运行。
另一方面,如果您使用<form action="">
,那么无论我在链接中添加什么,输出都是相同的。这是我推荐的选项。