gpt4 book ai didi

C# ASP.NET MVC 手动访问 Request.Form 和潜在危险值

转载 作者:行者123 更新时间:2023-11-30 21:43:18 25 4
gpt4 key购买 nike

我正在为每个用户请求序列化表单和查询字符串数据并将其保存到数据库中。这个特定的提交模型已经具有 [AllowHtml] 属性并且可以很好地提交给 Controller 。问题出在我记录请求的 Global.asax 文件中,当我访问此表单值时出现异常:

"A potentially dangerous Request.Form value was detected from the client (...)."

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[] 访问值将触发请求验证(因此异常(exception))。您可以使用 HttpRequestUnvalidated 属性来获取请求值而不触发验证。

替换

Request.Form[k]

Request.Unvalidated.Form[k]

谨慎使用 - 来自 documentation :

Security Note: If you use this property, you must manually check the data for potential cross-site scripting attacks.

关于C# ASP.NET MVC 手动访问 Request.Form 和潜在危险值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41840329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com