我们在Amazon Web Services中托管了OpenCart 2.3。我们已采取措施防范XSS,即我们在AWS设置上激活了XSS保护。在Google Chrome上,您会看到我们的标题:
X-XSS-Protection:1; mode=block
我做的一项测试是在结帐评论中输入以下内容:
<html>
<script>Alert('hello world')</script>
</html>
结帐时,未显示任何警告,表示脚本未执行?我检查了数据库并发现标签已经编码,例如存储为&lt; html&gt;这应该意味着我们的网站受到XSS保护吗?
我们可以采取哪些其他措施来全面防范XSS
答案 0 :(得分:1)
X-XSS-Protection
标题并不能完成你的想法。请参阅What is the http-header "X-XSS-Protection"以获得一个很好的概述。但是tl; dr是它能够在IE8 +上启用一些行为。
更广泛地说,XSS,就其本质而言,并不是单一行动可以防范的事情。每次你接受一些用户输入时,你必须格外小心,以验证它是否尊重你想要它的格式。每当你向用户提供该输入时,你必须正确处理它,以便恶意脚本不会在该用户的上下文中执行,并执行错误事情。
OWASP有一个很好的XSS prevention cheatsheet,这是一个非常好的资源。
但是,原则上,始终根据要显示的区域转义用户提供的输入。例如,如果用户为购物项目的标题提供了一些文本,那么它应该是只是文本,并在需要 文本的HTML元素中使用(例如,inline元素之一)和HTML转义等。另一方面,如果用户提供了URL,那么应该在URL有效的上下文中使用(作为源例如,图像)和URL转义。避免允许用户提供自己的HTML,CSS或脚本。并避免将用户提供的值放在脚本,CSS等中。
最后,既然您正在使用OpenCart,那么您将从其他人已经完成的大量工作中受益。所以,除非你做一些额外的习惯并且玩弄框架内部的东西,否则你可能不会遇到深水。当然,请遵循框架内的约定。