ASP.NET MVC 页面使用富文本控件的XSS漏洞问题

栏目: 编程语言 · ASP.NET · 发布时间: 8年前

内容简介:ASP.NET MVC 页面使用富文本控件的XSS漏洞问题

目前在做的项目存在XSS安全漏洞!

原因是有一些页面使用了富文本编辑框,为了使得其内容可以提交,为相关action设置了 [ValidateInput(false)] 特性:

[HttpPost]
        [ValidateInput(false)]
        public ActionResult MailPreview(FormCollection collection)
        {
            return View();
        }

但问题来了,同一页面还有其他字段内容,现在HTML、js脚本都能提交,不再受限,要么提交的时候全部都检查,否则就有XSS漏洞。我在某个文本框里输入 <script>alert(0);</script> ,提交成功后,页面展示提交内容,居然执行了!

所以说,千万小心不能轻易开启这个 [ValidateInput(false)] 特性。我觉得根本就不应该开启。可以酱紫:

public class MailVM
    {
        public string Title { get; set; }
        public string Time { get; set; }
        [AllowHtml]
        public string Mess { get; set; }
    }

针对这个实体类的单个字段设置 [AllowHtml] ,这样提交的时候,系统就会放过该字段。

问题是,action不能使用 FormCollection 来接收提交数据,而应该使用实体类。否则[AllowHtml]特性不起作用。究其原理,这种检查应该是系统的过滤器在拦截,你一个FormCollection,过滤器怎么着力?所以,上面的代码应改为:

[HttpPost]
        public ActionResult MailPreview(MailVM model)
        {
            return View();
        }

用实体类当然没有FormCollection灵活,不过对于这种特定场合,还是必须的。特别提一下,实体类可以只在提交的时候使用,页面输出时并不要求绑定实体类,页面的文本框等控件,也不一定要写成 @Html.TextBoxFor 这种形式。只需要

[HttpPost]
        public ActionResult MailPreview(MailVM model)
        {
            ……
        }

系统会自动按照model来装配提交数据。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

網絡社會之崛起

網絡社會之崛起

曼威·柯司特 / 夏鑄九、王志弘 等 / 唐山 / 2000-11 / NT$550

本書解釋了今日重塑世界的兩股強大但相互衝突的潮流:全球化與認同。資訊科技的革命以及資本主義的再結構已經引動了網絡社會,並帶來了策略,除經濟行為的全球化、工作的彈性化與不穩定,以及真實的虛擬文化。但是,伴隨著資本主義的轉化與國家主義的消亡而來的,是集體認同的表達以火力十足的方式竄起。它們挑戰了全球化中的文化單一性以及對於生活、環境的控制。曼威.柯司特在本書中描繪了社會運動的根源、目標以及效果,包括了......一起来看看 《網絡社會之崛起》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具