我阅读了有关PHP_SELF和htmlspecialchars的所有帖子,我按照它做了。但我不确定我网站的行为是否正确。
以下是我的代码。
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post" id="enquiryform" name="enquiryform">
当我输入网址为http://mydomain.com/enquiry.php?alert('hacked')时,它可以正常工作。
但是当我输入
时 http://mydomain.com/enquiry.php/<script>alert('hacked')</script>
or
http://mydomain.com/enquiry.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E
显示没有任何CSS的页面。但它在任何情况下都没有显示任何警告框(即使我不使用htmlSpecialchars)。
我很困惑这里发生了什么。
提前感谢您的帮助。
答案 0 :(得分:1)
您当前的实施是正确的。如果您不使用htmlspecialchars
,则您很容易受到这种潜在情况的影响:
http://mydomain.com/enquiry.php/"><script>alert('hacked')</script>
您的方案中缺少的是">
以突破当前标记。
htmlspecialchars所做的是逃避潜在恶意字符串,以便它不能被解释为原始HTML。