跨站脚本攻击Cross-site scripting (XSS)
攻击:
1,编辑框输入恶意代码,如
,破坏显示
2,编辑框输入破坏
3,编辑框输入,盗取用户的Cookie,加以处理获取权限
4,上传图片时,上传JS,页面,可执行文件
防御XSS攻击方法:
1,检查所有通过用户输入数据产生动态网页的代码是否存在安全漏洞
2,检查用户输入的数据(From,Cokies,Request.QueryString),是否存在不安全信息
3,Cookies做一点的安全处理(比如绑定MAC,IP)
4,限制输入数据长度(程序中也要做)
5,对输出进行编码以过滤特殊字符
6,尽量使用值类型,不要使用String类型
上传图片时,上传恶意文件,把图片单独放在一个文件夹,然后服务器端设置这个文件夹不允许执行任何JS和程序,从而解决这个问题
asp.net默认不接受textbox的html代码,如果在个别页面设置成允许的话,则要在程序中HttpUtility.HtmlEncode(Textbox1.text),把用户输入的值编码后,再使用,这样,系统就会把你输的什么就显
示什么,敏感字符就编码成了<==,进而防止XSS攻击
如果要允许用户输入敏感字符,则要
1,设置textbox的length,限制用户输入,但是还不绝对可靠
2,如果页面时post方式提交,而客户端可以自己做一个提交HTTP,所以程序中还要对输入值进行处理,如:Request.From["textbox1"].subString(0,10)
3,antixss控制输入输出
对输出进行编码以过滤特殊字符:
MS开源防攻击的库
http://antixss.codeplex.com/
antixss:反xss
SourceCode→change Set 28744(选择最新)→v3.1→Source→AntiXSS→AntiXSSLibrary→AntiXSS.cs
包含了一些常用的字符反XSS处理的方法。