gpt4 book ai didi

asp.net - 在 ASP.NET 中处理 HttpRequestValidationException

转载 作者:行者123 更新时间:2023-12-04 07:00:37 26 4
gpt4 key购买 nike

我遇到了一个问题,一些用户带着包含 < 或 & 字符(部分超出我的控制)的 cookie 访问我的网站。这些被 ASP.NET 标记为危险。我想要做的是能够捕获异常,检查我想要允许的某些众所周知的情况,然后再次抛出异常。我不想在全局 Application_Error 中结束,因为我希望请求继续进行,就好像在选定的“已知案例”中什么也没发生一样。

我认为我可以通过阅读 Application_BeginRequest 中的 Request.Cookies 来实现这一点,然后捕获异常。然而事实证明,这还为时过早。此时可以毫无问题地读取 cookie。检查(反射器)了解到只有在调用 HttpRequest.ValidateInput() 方法后才会抛出验证异常。这将验证设置为“尖锐”,但我不清楚何时发生这种情况。那么何时/何地触发验证以防止它以后冒泡?或者也许是一些完全不同的方法?

最佳答案

作为 Teun D 答案的一种变体,另一种选择是检查名称以“__utm”开头的所有 cookie(如 Google Analytics cookie 所做的那样)并以相同的方式清除其内容。

这个解决方案可能更健壮一些,因为 __utm... cookie 可以包含来自外部链接和搜索引擎引用的各种垃圾;触发 RequestValidation 错误的值中可能存在除“<”以外的字符。

为 VB 道歉,但我相信你们可以很容易地翻译成正确的代码:)

Private regGACookie As New Regex("^__utm")
Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
For Each strName As String In Request.Cookies
If regGACookie.IsMatch(strName) Then
' Leave the cookie alone, but remove from the request'
Request.Cookies(strName).Value = ""
End If
Next
End Sub

关于asp.net - 在 ASP.NET 中处理 HttpRequestValidationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1928810/

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