0

我阅读了有关 PHP_SELF 和 htmlspecialchars 的所有帖子,并按照它进行了操作。但我不确定我网站的行为是否正确。

下面是我的代码。

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post" id="enquiryform" name="enquiryform">

当我将 url 输入为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)。

我很困惑这里发生了什么。

提前感谢您的帮助。

4

1 回答 1

1

您当前的实现是正确的。如果您不使用htmlspecialchars,您很容易受到这种潜在情况的影响:

http://mydomain.com/enquiry.php/"><script>alert('hacked')</script>

您在场景中缺少的只是">打破当前标签。

htmlspecialchars 所做的是转义潜在的恶意字符串,使其不能被解释为原始 HTML。

于 2013-11-14T05:15:02.887 回答