Fire my passion

Anything with my most passion……
防御XSS跨站脚本攻击

跨站点脚本攻击是使用web页面验证的弱点来插入客户端脚本代码的一种攻击方式
这种弱点主要是由于:

1、没有输入验证
2、没有对输出进行编码
3、完全信任从共享数据库中取得的数据

对策主要有两种
1、对输入进行限制
2、对输出进行编码

对输入进行限制可以采取
1、使用数据验证控件,如RegularExpressionValidator、RangeValidator
2、使用System.Text.RegularExpressions.Regex类,对Session、Cookie等信息进行约束

对输出进行编码可以采取
1、HttpUtility.HtmlEncode对将要输出的数据进行编码

检查XSS的步骤
1、ASP.NET 的request validation是否允许
2、检查ASP.NET代码产生的HTML输出
3、看看HTML输出是否需要包括用户输入数据
4、检查潜在危险的HTML标签和属性
5、评估一下对策

如果需要进行更加严格的检查,可以使用Microsoft Anti-Cross Site Scripting Library来对输出进行编码
其中主要方法有:
1、HtmlEncode
2、HtmlAttributeEncode
3、JavaScriptEncode
4、UrlEncode
5、VisualbasicScriptEncode
6、XmlEncode
7、XmlAttributeEncode

使用这个库的步骤
1、检查ASP.NET代码产生的输出
2、看看是否包含非信任的输入数据。其中包括Application、Cookies、Databases、Form fields、Query string、Session
3、看看使用上述哪种输出方法
4、对输出进行编码

需要注意的地方:
1、只能对数据进行一次编码,否则输出的内容将不正确
2、在脚本块中进行编码不需要在编码后的字串外加入引号

posted on 2008-01-22 14:32  everx  阅读(623)  评论(1编辑  收藏  举报