博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
彻底解决“从客户端中检测到有潜在危险的Request.Form值”
阅读量:6829 次
发布时间:2019-06-26

本文共 2134 字,大约阅读时间需要 7 分钟。

    类似设置validateRequest="false"的方法不推荐,因为应用程序需要显式检查所有输入,不方便。

    1、前端使用encodeHtml函数对字符串进行编码,例:

var editor = $("textarea[name='editorValue']");$("#contents").val(encodeHtml(editor.val()));var formData = new FormData($("#frm")[0]);

    2、后端使用HtmlUtil.DecodeHtml方法进行解码,例:

model.contents = HtmlUtil.DecodeHtml(model.contents);

    3、View页面展示在编辑器中,例:

ue.addListener('ready', function (editor) {    var contents = decodeHtml("@content.contents");    ue.setContent(contents);});
JS方法decodeHtml代码:
function encodeHtml(val) {    return val.replace(/&/g, "&")              .replace(//g, ">");}function decodeHtml(val) {    return val.replace(/&/g, "&")              .replace(/</g, "<")              .replace(/>/g, ">")              .replace(/'/g, "'")              .replace(/"/g, "\"");}

    说明:上面的encodeHtml和decodeHtml方法有点绕人,因为这两个方法不对称,encodeHtml方法少了.replace(/'/g, "&#039;").replace(/\"/g, "&quot;")。编码的目的,是为了绕过验证,而导致验证不通过的原因是因为某些html标签,也就是说当字符串中含有<、>、&#039;之类的标识时,就会验证不通过,所以只需把&、<、>这三个替换掉就可以了。如果加上.replace(/'/g, "&#039;").replace(/\"/g, "&quot;"),则又会导致出现$#039;从而导致验证不通过,所以encodeHtml方法只替换3个。但解码多替换了两个,这是必需的,否则<span style="font-size:20px;"></span>在百度编辑器中显示会变成<span></span>从而造成style样式的丢失。

    HtmlUtil.DecodeHtml方法代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Common.Utils{    ///     /// HTML工具类    ///     public class HtmlUtil    {        #region html编码        ///         /// html编码        ///         public static string EncodeHtml(string html)        {            return html.Replace("&", "&")                       .Replace("<", "<")                       .Replace(">", ">")                       .Replace("'", "'")                       .Replace("\"", """);        }        #endregion        #region html解码        ///         /// html解码        ///         public static string DecodeHtml(string html)        {            return html.Replace("&", "&")                       .Replace("<", "<")                       .Replace(">", ">")                       .Replace("'", "'")                       .Replace(""", "\"");        }        #endregion    }}
View Code

 

 

转载于:https://www.cnblogs.com/s0611163/p/5542753.html

你可能感兴趣的文章
页面无刷新弹框!!
查看>>
asp.net 进度条实现。。
查看>>
LeetCode----204. Count Primes(Java)
查看>>
有一行文字,要求删去其中某个字符
查看>>
由Photoshop高反差保留算法原理联想到的一些图像增强算法。
查看>>
Android课程---qq登陆页面(练习)
查看>>
整理JRE瘦身或精简JRE
查看>>
idea搭建简单spring-boot项目
查看>>
何为RP(快速成型)技术?
查看>>
Python初学的几个迷惑点
查看>>
springmvc 文件上传(粘贴即用)
查看>>
$.each() each
查看>>
Oracle物化视图的一般使用
查看>>
跳马(广搜_队列)
查看>>
JEE_Model1和Model2模型
查看>>
51nod 1441:士兵的数字游戏
查看>>
UVA 11573 Ocean Currents
查看>>
serviceCapture 和firefox 模拟局域网慢网速
查看>>
hdu4908(中位数)
查看>>
别的程序员是怎么读你的简历的
查看>>