logo
登录 / 注册

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

头像
IT影子
2022-03-23 · 网络安全工程师

跨站脚本攻击漏洞出现和修复

跨站脚本攻击,又称XSS代码攻击,也是一种常见的脚本注入攻击。例如在下面的界面上,很多输入框是可以随意输入内容的,特别是一些文本编辑框里面,可以输入例如 alert('这是一个页面弹出警告'); 这样的内容,如果在一些首页出现很多这样的内容,而又不经过处理,那么页面就不断地弹框,更有甚者,在里面执行一个无限循环的脚本函数,直到页面耗尽资源为止,类似这样的攻击都是很常见的,所以我们如果是在外网或者很有危险的网络上发布程序,一般都需要对这些问题进行修复。

XSS代码攻击还可能会窃取或操纵客户会话和 Cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务。
[建议措施]
清理用户输入,并过滤出 JavaScript 代码。我们建议您过滤下列字符:
[1] <>(尖括号)
[2] "(引号)
[3] '(单引号)
[4] %(百分比符号)
[5] ;(分号)
[6] ()(括号)
[7] &(& 符号)
[8] +(加号)

为了避免上述的XSS代码攻击,解决办法是可以使用HttpUitility的HtmlEncode或者最好使用微软发布的AntiXSSLibrary进行处理,这个更安全。

① 2000多本网络安全系列电子书

② 网络安全标准题库资料

③ 项目源码

④ 网络安全基础入门、Linux、web安全、攻防视频

⑤ 网络安全学习路线

👉免费领取私信”安全“

微软反跨站脚本库(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控件,不会出现弹框的操作。

但是,我们虽然显示的时候设置了转义,输入如果要限制它们怎么办呢,也是使用AntiXSSLibrary里面的HtmlSanitizationLibrary类库Sanitizer.GetSafeHtmlFragment即可。

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

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



XSS跨站脚本攻击漏洞修复技巧脉脉
阅读 5
声明:本文内容由脉脉用户自发贡献,部分内容可能整编自互联网,版权归原作者所有,脉脉不拥有其著作权,亦不承担相应法律责任。如果您发现有涉嫌抄袭的内容,请发邮件至maimai@taou.com,一经查实,将立刻删除涉嫌侵权内容。
相关推荐
最新发布
大家都在看
热门人脉圈
    头像
    我来说几句...
    脉脉App内打开