PHP_SELF与htmlspecialchars奇怪的行为

时间:2013-11-14 03:39:24

标签: php htmlspecialchars

我阅读了有关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)。

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

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

您的方案中缺少的是">以突破当前标记。

htmlspecialchars所做的是逃避潜在恶意字符串,以便它不能被解释为原始HTML。