MVC中提示错误:从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法...
今天往MVC中加入了一個富文本編輯框,在提交信息的時候報了如下的錯誤:從客戶端(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請求都不再驗證提交內容的安全性,極不提倡這種做法。關于該問題的安全的解決方案可以參看本站:從客戶端中檢測到有潛在危險的Request.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 值的详细解决方法...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 变形坦克2宙斯盾主战坦克脱换码?
- 下一篇: C#动态生成html页