簡體   English   中英

C#ASP.NET MVC手動訪問Request.Form和潛在危險值

[英]C# ASP.NET MVC Manually Accessing Request.Form & Potentially Dangerous values

我正在序列化並保存表單,並針對每個用戶請求將字符串數據查詢到數據庫中。 這個特定的提交模型已經具有[AllowHtml]屬性,並可以向控制器提交。 問題出在我記錄請求的Global.asax文件內部,當我訪問此表單值時出現異常:

“從客戶端檢測到一個潛在危險的Request.Form值(...)。”

protected void Application_PostRequestHandlerExecute(Object sender, EventArgs e)
{
    ...
    var serializer = new JavaScriptSerializer();
    var formData = (Request.Form.Count == 0) ? "" : serializer.Serialize(Request.Form.AllKeys.Where(x => x != null).ToDictionary(k => k, k => Request.Form[k]));
    ...
}

當它嘗試訪問包含無效字符的Request.Form [k]時,將引發錯誤。

使用Request.Form[]訪問值將觸發請求驗證(因此發生異常)。 您可以使用HttpRequestUnvalidated屬性來獲取請求值,而無需觸發驗證。

更換

Request.Form[k]

Request.Unvalidated.Form[k]

謹慎使用-來自文檔

安全說明:如果使用此屬性,則必須手動檢查數據以防潛在的跨站點腳本攻擊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM