写点什么

XSS 跨站脚本攻击漏洞修复技巧

作者:喀拉峻
  • 2022 年 3 月 23 日
  • 本文字数:1056 字

    阅读完需:约 3 分钟

跨站脚本攻击漏洞出现和修复跨站脚本攻击,又称 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


    protected void Page_Load(object sender, EventArgs e)    {        this.lblName.Text = Encoder.HtmlEncode("<script>alert('OK');</SCRIPT>");    }
复制代码


例如上面的内容,赋值给一个 Lable 控件,不会出现弹框的操作。


XSS 跨站脚本攻击漏洞修复技巧但是,我们虽然显示的时候设置了转义,输入如果要限制它们怎么办呢,也是使用 AntiXSSLibrary 里面的 HtmlSanitizationLibrary 类库 Sanitizer.GetSafeHtmlFragment 即可。


    protected void btnPost_Click(object sender, EventArgs e)    {        this.lblName.Text = Sanitizer.GetSafeHtmlFragment(txtName.Text);    }
复制代码


这样对于特殊脚本的内容,会自动剔除过滤,而不会记录下来,从而达到我们想要的目的。

用户头像

喀拉峻

关注

左手Java右手Python,中间纹个C++ 2021.06.26 加入

还未添加个人简介

评论

发布
暂无评论
XSS跨站脚本攻击漏洞修复技巧_网络安全_喀拉峻_InfoQ写作平台