每当用户在我的Web应用程序中发布包含<或>在页面中的内容时,我都会抛出此异常.
我不想进入关于抛出异常或崩溃整个Web应用程序的聪明性的讨论,因为有人在文本框中输入了一个字符,但我正在寻找一种优雅的方法来处理这个问题.
捕获异常并显示
发生错误请返回并重新输入整个表单,但这次请不要使用<
对我来说似乎不够专业.
禁用post validation(validateRequest="false")肯定会避免此错误,但它会使页面容易受到许多攻击.
理想情况:当发回包含HTML限制字符的回发时,Form集合中的已发布值将自动进行HTML编码.所以.Text我的文本框的属性将是something & lt; html & gt;
有没有办法可以从处理程序中执行此操作?
我正在使用JavaScript从隐藏字段中提取值并将其显示在文本框中.隐藏字段中的值已编码.
例如,
<input id='hiddenId' type='hidden' value='chalk & cheese' />
Run Code Online (Sandbox Code Playgroud)
被拉进去
<input type='text' value='chalk & cheese' />
Run Code Online (Sandbox Code Playgroud)
通过一些jQuery从隐藏字段中获取值(此时我丢失了编码):
$('#hiddenId').attr('value')
Run Code Online (Sandbox Code Playgroud)
问题是,当我chalk & cheese从隐藏字段中读取时,JavaScript似乎失去了编码.为了逃避chalk & cheese和amp;,我想编码保留.
是否有一个JavaScript库或jQuery方法将对字符串进行HTML编码?
当我从ASP.NET MVC视图中的TinyMCE发布时,我收到此错误.
错误:
请求验证已检测到潜在危险的客户端输入值,并且请求的处理已中止
从谷歌搜索,它说只是在我做的顶部的Page指令中添加了validateRequest,但我仍然得到这个错误.如您所见,下面是我在视图中的代码:
<%@ Page validateRequest="false" Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
Run Code Online (Sandbox Code Playgroud) 我有以下脚本,它编码它收到的一些值,但它似乎不编码双引号.
在发布之前如何正确编码完整值?
function htmlEncode(value){
return $('<div/>').text(value).html();
}
Run Code Online (Sandbox Code Playgroud)
上面的脚本给了我这个:
<p>Test&nbsp; <span style="color: #ffffff"><strong><span style="background-color: #ff0000">1+1+1=3</span></strong></span></p>
Run Code Online (Sandbox Code Playgroud)
我需要它给我这个:
<p>Test&nbsp; <span style="color: #ffffff"><strong><span style="background-color: #ff0000">1+1+1=3</span></strong></span></p>
Run Code Online (Sandbox Code Playgroud)
编辑:后续问题: 数据库中的编码HTML返回页面
asp.net-mvc ×2
html ×2
html-encode ×2
jquery ×2
asp.net ×1
escaping ×1
javascript ×1
post ×1
request.form ×1
scripting ×1
tinymce ×1
validation ×1