【发布时间】:2015-08-11 08:00:29
【问题描述】:
如果我需要在模板中显示$_GET 值,为什么不使用strip_tags() 而不是htmlspecialchars() 来防止xss 攻击?
【问题讨论】:
标签: xss htmlspecialchars strip-tags
如果我需要在模板中显示$_GET 值,为什么不使用strip_tags() 而不是htmlspecialchars() 来防止xss 攻击?
【问题讨论】:
标签: xss htmlspecialchars strip-tags
因为 strip_tags 并不能解决所有可能的滥用情况。诚然,它修复了最严重的违规者,但还有其他情况,例如当自己将值插入<input>标签时,引号可以被打破。
考虑:
<input type="text" value="my string" />
如果my string 来自其他不受 XSS 保护的数据源,它可能包含以下内容:
"><script ....
它可以使用输入标签的原始关闭> - 并且strip_tags 可能会也可能不会遇到这种情况。我似乎记得它会查找<,然后是>,这在上面的字符串中找不到。
【讨论】:
strip_tags(htmlspecialchars($_GET))?有道理? strip_tags 是否仍然适用于转义的 html 特殊字符?
< 或> 标签。
htmlspecialchars() 可以转义所有可以添加的特殊字符,例如<script>alert('You've been hacked');</script>
受保护的网站的主要部分是:
htmlspecialchars() - 防止 XSS
MySQLI 准备好的语句 - 防止 SQL 注入
还有很多其他的攻击,但这两个是世界上每个网站都必须的,否则,我将能够在 1 分钟内黑掉你的网站(没有谎言)。
【讨论】: