XSS 跨站脚本攻击漏洞修复技巧
跨站脚本攻击漏洞出现和修复跨站脚本攻击,又称 XSS 代码攻击,也是一种常见的脚本注入攻击。例如在下面的界面上,很多输入框是可以随意输入内容的,特别是一些文本编辑框里面,可以输入例如 alert('这是一个页面弹出警告'); 这样的内容,如果在一些首页出现很多这样的内容,而又不经过处理,那么页面就不断地弹框,更有甚者,在里面执行一个无限循环的脚本函数,直到页面耗尽资源为止,类似这样的攻击都是很常见的,所以我们如果是在外网或者很有危险的网络上发布程序,一般都需要对这些问题进行修复。
XSS 跨站脚本攻击漏洞修复技巧 XSS 代码攻击还可能会窃取或操纵客户会话和 Cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务。[建议措施]清理用户输入,并过滤出 JavaScript 代码。我们建议您过滤下列字符:[1] <>(尖括号)[2] "(引号)[3] '(单引号)[4] %(百分比符号)[5] ;(分号)[6] ()(括号)[7] &(& 符号)[8] +(加号)
为了避免上述的 XSS 代码攻击,解决办法是可以使用 HttpUitility 的 HtmlEncode 或者最好使用微软发布的 AntiXSSLibrary 进行处理,这个更安全。
微软反跨站脚本库(AntiXSSLibrary)是一种编码库,旨在帮助保护开发人员保护他们的基于 Web 的应用不被 XSS 攻击。
编码方法
使用场景
示例
HtmlEncode(String)
不受信任的 HTML 代码。
Click Here [不受信任地输入]
HtmlAttributeEncode(String)
不受信任的 HTML 属性
JavaScriptEncode(String)
不受信任的输入在 JavaScript 中使用
…[Untrusted input]…
UrlEncode(String)
不受信任的 URL
Cnblogs.com
VisualBasicScriptEncode(String)
不受信任的输入在 VBScript 中使用
…[Untrusted input]…
XmlEncode(String)
不受信任的输入用于 XML 输出
[Untrusted input]
XmlAttributeEncode(String)
不 受信任的输入用作 XML 属性
Some Text
例如上面的内容,赋值给一个 Lable 控件,不会出现弹框的操作。
XSS 跨站脚本攻击漏洞修复技巧但是,我们虽然显示的时候设置了转义,输入如果要限制它们怎么办呢,也是使用 AntiXSSLibrary 里面的 HtmlSanitizationLibrary 类库 Sanitizer.GetSafeHtmlFragment 即可。
这样对于特殊脚本的内容,会自动剔除过滤,而不会记录下来,从而达到我们想要的目的。
评论