在PHP页面上的表单中,您可以使用:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" ...>
Run Code Online (Sandbox Code Playgroud)
要么
<form action="#" ...>
Run Code Online (Sandbox Code Playgroud)
要么
<form action="" ...>
Run Code Online (Sandbox Code Playgroud)
在表单的action属性中.由于echo $_SERVER['PHP_SELF']不传递变量以供使用GET而你必须使用"",为什么要使用它"#"?
我问,因为我花了一些时间才弄清楚变量是不是通过的$_SERVER['PHP_SELF'].谢谢.
Nie*_*sol 62
该action属性将默认为当前URL.这是说"将表单提交到它来自同一个地方"的最可靠和最简单的方法.
没有理由使用$_SERVER['PHP_SELF'],也#根本没有提交表单(除非submit附加了处理提交的事件处理程序).
Thi*_*ter 43
使用空字符串非常精细,实际上比简单使用更安全$_SERVER['PHP_SELF'].
使用$_SERVER['PHP_SELF']它时很容易通过简单地附加到URL /<script>...的whatever.php一部分之后注入恶意数据,因此您不应该使用此方法并停止使用任何建议它的PHP教程.
Mar*_*ich 23
当您将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="">
Run Code Online (Sandbox Code Playgroud)
我的脚本会运行,你就不会更聪明了.如果您已登录,我可能会窃取您的Cookie,或从您的网页上删除机密信息.
但是,如果您使用<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>">,输出将是:
<form action="http://example.com/"><script>cookie_stealing_code()</script><span class="">
Run Code Online (Sandbox Code Playgroud)
当你提交表单时,你会有一个奇怪的URL,但至少我的邪恶脚本没有运行.
另一方面,如果您使用了<form action="">,那么无论我添加到链接中,输出都是相同的.这是我建议的选项.
Mic*_*a93 11
我知道问题是两年了,但这是我要找的第一个结果.我找到了一个很好的答案,我希望我可以帮助其他用户.
我将简要介绍一下:
使用$_SERVER["PHP_SELF"]带有htmlspecialchars()的变量:
`htmlspecialchars($_SERVER["PHP_SELF"]);`
Run Code Online (Sandbox Code Playgroud)PHP_SELF返回当前正在执行的脚本的文件名.
htmlspecialchars()函数的特殊字符转换为HTML实体. - >没有XSS| 归档时间: |
|
| 查看次数: |
173421 次 |
| 最近记录: |