如果我需要在模板中显示$_GET
值,为什么不使用strip_tags()
来阻止xss攻击而不是htmlspecialchars()
?
答案 0 :(得分:2)
因为strip_tags没有修复所有可能的滥用案例。确实,它修复了最严重的罪犯,但还有其他情况,例如:将值重新插入<input>
标记时,可以将引号分解为。
考虑:
<input type="text" value="my string" />
如果my string
来自其他一些不受XSS保护的数据源,可以想象包含以下内容:
"><script ....
可以使用输入标记的原始结尾>
- 而strip_tags
可能会也可能不会捕获该情况。我似乎记得它会查找<
后跟>
,而上述字符串中找不到{。}}。
答案 1 :(得分:1)
htmlspecialchars()可以转义所有能够在示例中添加的<script>alert('You've been hacked');</script>
受保护的网站的主要部分是:
htmlspecialchars()-防止XSS
MySQLI准备的语句-防止SQL注入
还有很多其他攻击,但是这两个对于世界上每个网站都是必须的,否则,我将能够在一分钟之内破解您的网站(不会说谎)。