【異常記錄(七)】MVC:從客戶端中檢測到有潛在危險的 Request.Form 值 的解決方法 [轉] A potentially dangerous Request.Form value was detected from the client


從客戶端(Content="<EM ><STRONG ><U >這是測試這...")中檢測到有潛在危險的Request.Form 值。


說明: 請求驗證過程檢測到有潛在危險的客戶端輸入值,對請求的處理已經中止。該值可能指示存在危及應用程序安全的嘗試,如跨站點腳本攻擊。

若要允許頁面重寫應用程序請求驗證設置,請將 httpRuntime 配置節中的 requestValidationMode 特性設置為requestValidationMode="2.0"。

示例: <httpRuntime requestValidationMode="2.0" / >。設置此值后,可通過在 Page 指令或 <pages > 配置節中設置 validateRequest="false" 禁用請求驗證。

但是,在這種情況下,強烈建議應用程序顯式檢查所有輸入。有關更多信息,請參見http://go.microsoft.com/fwlink/?LinkId=153133。 


原以為就像普通的Asp.net頁面一樣,在頭部的Page中加入ValidateRequest="false"就行了,誰知問題還是存在。

弄了一個上午,問題終於解決,將解決方法匯總如下:

 


1,在出現該錯誤的頁面頭部的page中加入ValidateRequest="false",那么該頁面的任何一次Post提交都不會再驗證提交內容的安全性。 如:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Manage/ViewMasterPageEdit.Master"     Inherits="System.Web.Mvc.ViewPage<MvcWebPhoto.Models.Entities.Article >" 
ValidateRequest="false" % >
 
 

2,在web.config中的pages節中配置validateRequest="false",如:

<system.web > <pages validateRequest="false" ></pages >  </system.web >

但這樣,整個項目中的所有Form請求都不再驗證提交內容的安全性,極不提倡這種做法。

 


3,如果你使用的是.Net 3.5,MVC 2.0及更高的版本,那么可以在處理Post方法的Action添加一個特性:[ValidateInput(false)],這樣處理就更加有針對性,提高頁面的安全性。 如:

[HttpPost] [ValidateInput(false)] public ActionResult CatalogEdit(Catalog model) { return View(); }
 
 
 

重要: 如果你使用的是MVC 3.0,那么你會發現做了以上的設置后還是無效。這是因為你還需要在web.config中做以下設置:

<system.web > 

<httpRuntime requestValidationMode="2.0" / >

</system.web >

 

 

注意:在MVC項目中,Views文件夾下與主項目下,都會有一個web.config文件。

Views下的web.config文件只對Views文件夾下面的文件有效。如果你要處理的頁面不在Views下面,

那么<httpRuntime requestValidationMode="2.0" / >一定要設置在主項目下的web.config中才有用。

 

 

 

轉自:MVC:從客戶端中檢測到有潛在危險的 Request.Form 值 的解決方法   (僅作筆記和分享,侵刪)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM