程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> ASP.NET MVC 3裡面客戶端輸入驗證的改動

ASP.NET MVC 3裡面客戶端輸入驗證的改動

編輯:C#入門知識

最近在用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">
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved