当前位置:编程学习 > asp >>

ASP.NET MVC 3里面客户端输入验证的改动

最近在用ASP.NET MVC 3,在通过TinyMCE HTML编辑器,向服务器端输入HTML代码时,收到了下面这个错误信息:

异常详细信息: System.Web.HttpRequestValidationException: 从客户端(test="<a>adfasdf</a>")中检测到有潜在危险的 Request.Form 值。

很明显,这是ASP.NET为了阻止跨站脚本攻击所实现的防御措施,然而在我的情况下,我的确需要ASP.NET临时关闭这个检查机制,因为这个时候我需要保存原始的HTML文本。在网上搜了一下,发现很多人的解决方案有点粗暴,要么是直接将整个站点的HTML跨站攻击检测机制禁止掉:

  1. 将web.config文件里,添加上<httpRuntime requestValidationMode="2.0" />。
  2. 然后再<pages>节设置validateRequest="false" 禁用请求验证。

安全一点的,也是把整个页面的检测机制禁止掉—即通过在webform页面的Page指令禁用请求验证,或在MVC的Controller上加上[ValidateInput(false)]属性。下面这个razor语法的页面就可以让你重现这个问题:


 

\代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Sample Page</title>
<script src="@Url.Content("~/Scripts/jquery-1.4.2.min.js")" type="text/javascript"></script>
    <script type="text/javascript" src="@Url.Content("~/Scripts/tinymce/tiny_mce.js")"></script>
    <script type="text/javascript" src="@Url.Content("~/Scripts/tinymce/jquery.tinymce.js")"></script>
    <script language="javascript" type="text/javascript">
补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,