防止XSS漏洞的措施(比如几天前Twitter的漏洞)

时间:2009-05-03 03:16:50

标签: xss

即使像Twitter这样的着名网站也遭受XSS漏洞的侵害,我们应该怎样做才能防止这种攻击呢?

3 个答案:

答案 0 :(得分:8)

您可以做的#1事情是将您的cookie设置为仅HTTP ...这至少可以防止会话cookie劫持。就像有人在您管理您自己的网站时窃取您的cookie一样。

其余的归结为验证所有用户输入。

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

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

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

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

XSS只是众多漏洞利用中的一个,每个网络开发者都应该通过心脏imho了解前10名OWASP

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

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

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