为什么不使用 strip_tags() 而不是 htmlspecialchars() 来防止 xss 攻击?
why not using strip_tags() to prevent xss attack instead of htmlspecialchars()?
如果我需要在模板中显示 $_GET
值,为什么不使用 strip_tags()
来防止 xss 攻击而不是 htmlspecialchars()
?
因为 strip_tags 并不能解决所有可能的滥用案例。的确,它修复了最严重的违规者,但还有其他情况,例如当您自己将值插入 <input>
标签时,引号可以被打破。
考虑:
<input type="text" value="my string" />
如果 my string
来自其他一些不受 XSS 保护的数据源,它可能包含如下内容:
"><script ....
可以使用输入标签的原始结束 >
- strip_tags
可能会也可能不会捕捉到这种情况。我似乎记得它会查找 <
后跟 >
,这在上面的字符串中找不到。
htmlspecialchars() 可以转义所有能够添加的特殊字符,例如 <script>alert('You've been hacked');</script>
受保护网站的主要部分是:
htmlspecialchars() - 防止 XSS
MySQLI prepared statement - 为了防止SQL注入
还有很多其他攻击,但这两个是世界上每个网站都必须的,否则,我可以在 1 分钟内破解您的网站(不骗人)。
如果我需要在模板中显示 $_GET
值,为什么不使用 strip_tags()
来防止 xss 攻击而不是 htmlspecialchars()
?
因为 strip_tags 并不能解决所有可能的滥用案例。的确,它修复了最严重的违规者,但还有其他情况,例如当您自己将值插入 <input>
标签时,引号可以被打破。
考虑:
<input type="text" value="my string" />
如果 my string
来自其他一些不受 XSS 保护的数据源,它可能包含如下内容:
"><script ....
可以使用输入标签的原始结束 >
- strip_tags
可能会也可能不会捕捉到这种情况。我似乎记得它会查找 <
后跟 >
,这在上面的字符串中找不到。
htmlspecialchars() 可以转义所有能够添加的特殊字符,例如 <script>alert('You've been hacked');</script>
受保护网站的主要部分是:
htmlspecialchars() - 防止 XSS
MySQLI prepared statement - 为了防止SQL注入
还有很多其他攻击,但这两个是世界上每个网站都必须的,否则,我可以在 1 分钟内破解您的网站(不骗人)。