为什么不使用strip_tags()来阻止xss攻击而不是htmlspecialchars()?

时间:2015-08-11 08:00:30

标签: xss htmlspecialchars strip-tags

如果我需要在模板中显示$_GET值,为什么不使用strip_tags()来阻止xss攻击而不是htmlspecialchars()

2 个答案:

答案 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注入

还有很多其他攻击,但是这两个对于世界上每个网站都是必须的,否则,我将能够在一分钟之内破解您的网站(不会说谎)。