ASP.NET MVC或者.net Core mvc 页面使用富文本控件的 保存问题
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 页面使用富文本控件的 保存问题的更多相关文章
- ASP.NET MVC 页面使用富文本控件的XSS漏洞问题
目前在做的项目存在XSS安全漏洞! 原因是有一些页面使用了富文本编辑框,为了使得其内容可以提交,为相关action设置了[ValidateInput(false)] 特性: [HttpPost] [V ...
- ASP.NET页面生命周期与控件生命周期
ASP.NET页面生命周期 (1)PreInit 预初始化(2)Init 初始化(3)InitComplete 初始化完成(4)PreLoad 预加载(5)Load 加载(6)LoadComplete ...
- Visual Studio 2013新建ASP.NET项目使用Empty模板,在页面中使用验证控件出错的解决方案
Visual Studio 2013新建ASP.NET项目使用Empty模板,在页面中使用验证控件,运行页面,会出现如下的错误: 错误原因 VisualStudio 2012(或2013) WebFo ...
- Asp.net页面生命周期详解任我行(2)-WebForm页面生命周期WEBFORM_ASPNET控件树的生成和作用
摘要 页面类是如何结合后台文件类生成整个页面的HTML的代码和后台输出的代码输出到浏览器中呢?这就牵扯到Asp.net页面生命周期中一个很重要的概念控件树.服务器以反射的方式创建了页面类对象 内容 我 ...
- asp.net 页面上传文件控件后台代码Request.Files获取不到
今天开发中遇到页面文件上传控件选择了文件,而后台Request.Files.Count取值为0,之前开发中遇到过几次,老是忘掉,今天记下来. html: <input type="fi ...
- 『Asp.Net 组件』Asp.Net 服务器组件 内嵌JS:让自己的控件动起来
代码: using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ...
- ASP.NET2.0自定义控件组件开发 第六章 深入讲解控件的属性
原文:ASP.NET2.0自定义控件组件开发 第六章 深入讲解控件的属性 深入讲解控件的属性持久化(一) 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开 ...
- WebForm页面生命周期WEBFORM_ASPNET控件树的生成和作用
WebForm页面生命周期WEBFORM_ASPNET控件树的生成和作用 摘要 页面类是如何结合后台文件类生成整个页面的HTML的代码和后台输出的代码输出到浏览器中呢?这就牵扯到Asp.net页面生命 ...
- 『Asp.Net 组件』Asp.Net 服务器组件 内嵌图片:自己的图片控件
代码: using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ...
随机推荐
- 在IntelliJ IDEA中启动tomcat出现Can't load AMD 64-bit .dll on a IA 32-bit' platform问题详解
第一查看jdk版本 第二查看IntelliJ IDEA中运行tomcat的配置的jdk 比较两个jdk版本是否一致.或者查看tomcat是64还是32位的
- npm package.json配置整理
通过npm init 创建 package.json文件 参数: name:项目名字 version: 版本号 description: 项目介绍 main: 项目的入口文件 scripts: npm ...
- CV3——学习笔记-实战项目(上):如何搭建和训练一个深度学习网络
http://www.mooc.ai/course/353/learn?lessonid=2289&groupId=0#lesson/2289 1.AlexNet, VGGNet, Googl ...
- 简易的CRM系统案例之Struts2+Hibernate3+JSP+MySQL版本
改造上一版本的DAO层 简易的CRM系统案例之Struts2+JSP+MySQL版本 src文件下hibernate.cfg.xml <!DOCTYPE hibernate-configurat ...
- MySQL VARCHAR字段最大长度到底是多少
MySQL VARCHAR字段最大长度到底是多少 varchar(n),n表示什么? MySQL5.0.3之前varchar(n)这里的n表示字节数 MySQL5.0.3之后varchar(n)这 ...
- 007-多线程-JUC集合-Queue-BlockingQueue接口以及ArrayBlockingQueue
0.BlockingQueue接口介绍 BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利 ...
- osg::Texture2D 贴纹理
#ifdef _WIN32 #include <Windows.h> #endif // _WIN32 #include<iostream> #include <osgV ...
- Cisco设备自动定时备份配置
前言 当我们管理的网络设备为个位数的时候,手动的把配置通过tftp方式copy出来还是可以的.但是当我们管理几十台甚至上百台(有点夸张,都这个级别了肯定用专业的运维软件或者开发运维平台进行管理)的时候 ...
- spark 入门学习 核心api
spark入门教程(3)--Spark 核心API开发 原创 2016年04月13日 20:52:28 标签: spark / 分布式 / 大数据 / 教程 / 应用 4999 本教程源于2016年3 ...
- winform软件版本检测自动升级开发流程(转)
注:按此博文试验OK 基于C/S的开发有开发效率高,对于业务逻辑复杂,且不需要外网使用具有较大优势,但是弊端也不可忽视,就是升级麻烦,不可能每写一个版本就要拿着安装包给每个人去替换,这样不仅搞得自己很 ...