就连Twitter这样的知名网站也存在XSS漏洞,我们应该如何预防这种攻击呢?

有帮助吗?

解决方案

您可以做的第一件事是将您的 cookie 设置为仅 HTTP ...这至少可以防止会话 cookie 劫持。就像当您可能是自己网站的管理员时有人窃取您的 cookie。

剩下的就是验证所有用户输入。

  • 规则 #0 - 切勿在允许的位置之外插入不受信任的数据
  • 规则 #1 - 在将不受信任的数据插入 HTML 元素内容之前进行 HTML 转义
  • 规则 #2 - 在将不受信任的数据插入 HTML 公共属性之前进行属性转义
  • 规则 #3 - 在将不受信任的数据插入 HTML JavaScript 数据值之前进行 JavaScript 转义
  • 规则 #4 - 在将不受信任的数据插入 HTML 样式属性值之前进行 CSS 转义
  • 规则 #5 - 在将不受信任的数据插入 HTML URL 属性之前进行 URL 转义

这里详细讨论了非常冗长的主题:

http://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

http://www.owasp.org/index.php/Cross_site_scripting

XSS 只是众多漏洞之一,每个 Web 开发人员都应该牢记前 10 名 OWASP 恕我直言

http://www.owasp.org/index.php/Top_10_2007

其他提示

就像你可以通过使用预准备语句使SQL注入成为非问题一样,你可以通过使用类似的模板引擎(DOM序列化器)使XSS成为非问题。

设计您的应用程序,以便所有输出都通过模板引擎进行。默认情况下,使模板引擎HTML转义所有数据。通过这种方式,您将拥有默认安全的系统,并且不依赖于人类(以及大型系统的其余部分)在逃避HTML时的努力。

我不是你编写代码的,但是如果你使用asp.net,你就会被部分覆盖。 asp.net具有他们称之为请求验证的功能,在启用时,它会阻止通过用户输入引入恶意脚本。

但有时候,你必须允许某种类型的文本编辑器,就像你在这个问题中键入的一样。在这种情况下,您必须部分禁用请求验证以允许某些“富文本”。 html由最终用户输入。在这种情况下,您将不得不构建某种白名单过滤机制。

仅供参考,我不了解其他人,但Microsft的图书馆名为Anti-Xss。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top