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

從客戶端(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提交都不會再驗證提交內容的安全性。
如:web

<%@ 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中作如下設置:.net

<system.web >
<httpRuntime requestValidationMode="2.0" / >
</system.web >


注意:在MVC項目中,Views文件夾下與主項目下,都會有一個web.config文件。Views下的web.config文件只對Views文件夾下面的文件有效。若是你要處理的頁面不在Views下面,那麼<httpRuntime requestValidationMode="2.0" / >必定要設置在主項目下的web.config中才有用。code

相關文章
相關標籤/搜索