https://blog.csdn.net/leftfist/article/details/69629394

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

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

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

1
    2
    3
    4
    5
    6

但问题来了,同一页面还有其他字段内容,现在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; }
    }

1
    2
    3
    4
    5
    6
    7

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

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

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

1
    2
    3
    4
    5

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

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

1
    2
    3
    4
    5

系统会自动按照model来装配提交数据。
---------------------
作者:左直拳
来源:CSDN
原文:https://blog.csdn.net/leftfist/article/details/69629394
版权声明:本文为博主原创文章,转载请附上博文链接!

ASP.NET MVC或者.net Core mvc 页面使用富文本控件的 保存问题的更多相关文章

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

    目前在做的项目存在XSS安全漏洞! 原因是有一些页面使用了富文本编辑框,为了使得其内容可以提交,为相关action设置了[ValidateInput(false)] 特性: [HttpPost] [V ...

  2. ASP.NET页面生命周期与控件生命周期

    ASP.NET页面生命周期 (1)PreInit 预初始化(2)Init 初始化(3)InitComplete 初始化完成(4)PreLoad 预加载(5)Load 加载(6)LoadComplete ...

  3. Visual Studio 2013新建ASP.NET项目使用Empty模板,在页面中使用验证控件出错的解决方案

    Visual Studio 2013新建ASP.NET项目使用Empty模板,在页面中使用验证控件,运行页面,会出现如下的错误: 错误原因 VisualStudio 2012(或2013) WebFo ...

  4. Asp.net页面生命周期详解任我行(2)-WebForm页面生命周期WEBFORM_ASPNET控件树的生成和作用

    摘要 页面类是如何结合后台文件类生成整个页面的HTML的代码和后台输出的代码输出到浏览器中呢?这就牵扯到Asp.net页面生命周期中一个很重要的概念控件树.服务器以反射的方式创建了页面类对象 内容 我 ...

  5. asp.net 页面上传文件控件后台代码Request.Files获取不到

    今天开发中遇到页面文件上传控件选择了文件,而后台Request.Files.Count取值为0,之前开发中遇到过几次,老是忘掉,今天记下来. html: <input type="fi ...

  6. 『Asp.Net 组件』Asp.Net 服务器组件 内嵌JS:让自己的控件动起来

    代码: using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ...

  7. ASP.NET2.0自定义控件组件开发 第六章 深入讲解控件的属性

    原文:ASP.NET2.0自定义控件组件开发 第六章 深入讲解控件的属性 深入讲解控件的属性持久化(一) 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开 ...

  8. WebForm页面生命周期WEBFORM_ASPNET控件树的生成和作用

    WebForm页面生命周期WEBFORM_ASPNET控件树的生成和作用 摘要 页面类是如何结合后台文件类生成整个页面的HTML的代码和后台输出的代码输出到浏览器中呢?这就牵扯到Asp.net页面生命 ...

  9. 『Asp.Net 组件』Asp.Net 服务器组件 内嵌图片:自己的图片控件

    代码: using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ...

随机推荐

  1. Flutter移动电商实战 --(42)详细页_UI主页面架构搭建

    详细分成六大部分拆分开 body里面用FutureBuilder异步加载. FutureBuilder里面的furure属性这里用一个方法,必须返回的也是future 把我们的方法修改为返回的类型为F ...

  2. android studio: 让项目通过阿里云 maven jcenter 下载依赖资源

    打开项目根目录下的 build.gradle(Project:项目名称一级的gradle),如下所示添加阿里 maven 库地址: // Top-level build file where you ...

  3. PorterDuffXfermode之PorterDuff.Mode.XOR入门学习

    package com.loaderman.customviewdemo.view; import android.content.Context; import android.graphics.* ...

  4. osg::GraphicsContext::WindowingSystemInterface Screen Resolution(屏幕分辨率)

    unsigned int width, height; //获取系统分辨率 osg::GraphicsContext::WindowingSystemInterface *wsInterface = ...

  5. PAT 甲级 1040 Longest Symmetric String (25 分)(字符串最长对称字串,遍历)

    1040 Longest Symmetric String (25 分)   Given a string, you are supposed to output the length of the ...

  6. WPF窗体应用程序开发

    1.Window:登录窗口.主窗体.消息框 2.UserControl:业务界面.消息框(如果使用UC来实现,则需要做特殊的处理,比如中断功能如何处理?)(显示一个UC,必须将其添加到容器中,所以&l ...

  7. 第二十四章 在线会话管理——《跟我学Shiro》

    目录贴:跟我学Shiro目录贴 有时候需要显示当前在线人数.当前在线用户,有时候可能需要强制某个用户下线等:此时就需要获取相应的在线用户并进行一些操作. 本章基于<第十六章 综合实例>代码 ...

  8. php验证码实例

    验证码实例如下看不懂的先看gd库的那一篇,session不懂的看from提交的数据都哪里了那一篇,欢迎关注 index.php <!DOCTYPE html> <html lang= ...

  9. selenium3 web自动化测试框架 四:Unittest介绍及项目实战中的运用

    unittest介绍及运用,可以参考之前写的文章,除了未结合web自动化演示,基础知识都有了 https://www.cnblogs.com/wuzhiming/p/8858305.html unit ...

  10. (IStool)64位软件安装在32位操作系统时给出提示

    需求:64位的软件当在32位操作系统下安装时,需要提示用户不能在32位操作系统中进行安装 实现:打包时启用64位模式(打包工具用的是Inno Setup 5) 安装脚本段需要添加以下代码: [Setu ...