asp.net中提交表單數據時提示從客戶端(。。。)中檢測到有潛在危險的 Request.Form 值

 

看到這個圖是否是很親切熟悉哈,作過。net的確定都見過哈web

已經 將近4年沒碰。net了,今天正好朋友的程序有幾個bug,讓我幫忙修復下,因而我就抱着試試看的心情改了改,改到最後一個問題的時候也就是上面的這個問題,我一看,這不很明顯麼安全

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

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

ValidateRequest="false" % >
就像上圖 加個   ValidateRequest="false"就完事
我去居然還很差使,而後我百度
百度說要在web.config中設置,因而我又在web.config裏設置
<pages validateRequest="false" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>
感受能夠了,我去,居然還不行 有鬼啊。。不太科學啊,再百度把
發現了 如下這些
 

若是你使用的是.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中作如下設置:spa

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


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

 

最後仍是紅色字體幫助了我,我看了項目確實是mvc3 仍是個比較低的版本blog

相關文章
相關標籤/搜索