- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在使用 ASP.NET MVC 5 时遇到了一个相当普遍的问题,它会在无效的 URL 字符(例如 &
和 %
上引发异常。
我尝试了很多来自其他堆栈溢出问题的不同建议,比如 here和 here .但是,将此添加到我的 Web.config 不起作用:
<system.web>
<httpRuntime requestPathInvalidCharacters="<,>,%,:,\,?"
requestValidationMode="2.0"/>
</system.web>
也不会在我的 Controller 方法上方添加 [HttpValidate(false)]
。
我找到了这个 gem在寻找解决方案时,它看起来很有希望,但即使那样也行不通。 url 请求没有被该站点的代码更改,这让我想知道问题是否发生在 ASP.net 甚至有机会采取行动之前。
我试图避免手动编码我的所有请求,但如果这是我必须做的,那么我想我别无选择。
如果有帮助,这是我的堆栈跟踪:
[HttpException (0x80004005): A potentially dangerous Request.Path value was detected from the client (&).]
System.Web.HttpRequest.ValidateInputIfRequiredByConfig() +9693412 System.Web.PipelineStepManager.ValidateHelper(HttpContext context) +53
最佳答案
我在 Web-Form 应用程序中遇到过该错误,它通常是由传递给 Controller 的特殊字符引起的。最简单的解决方案,以确保您的数据在到达您的 Controller 之前被正确编码。这将是最安全的方法,但是如果您想要一种快速而肮脏的方法,您可以通过 web.config
稍微放松对 Page/View 的安全性。
<!-- Example: 'Web-Config' -->
<location path="test.aspx">
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
</location>
上面做了以下事情:
In either case, you must make two changes in the Web.config file. The first change is to set the requestValidationMode attribute of the httpRuntime element to "2.0". This setting makes request validation occur later in the sequence of request processing events. The setting is required for applications that use ASP.NET 4 and later, because as of ASP.NET 4, request validation takes place earlier in the request life cycle than it did in previous versions of ASP.NET.
否则你可以简单地使用:
HttpUtility.HtmlDecode("...");
HttpUtility.HtmlEncode("...");
以上目的:
If characters such as blanks and punctuation are passed in an HTTP stream, they might be misinterpreted at the receiving end. HTML encoding converts characters that are not allowed in HTML into character-entity equivalents; HTML decoding reverses the encoding. For example, when embedded in a block of text, the characters < and > are encoded as < and > for HTTP transmission.
您还可以查找 UrlEncode
和 UrlDecode
。
关于c# - 检测到 ASP.NET MVC 5 危险的 Request.Path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31477597/
编辑:澄清一下,我明白为什么这段代码不起作用,我并不是要修复它,而是想了解如果这段代码可以在没有语义错误的情况下编译会有什么危险。 我发现下面的代码会导致静态语义错误。我知道这是因为 std::lis
我想知道 C# 枚举以及重复值会发生什么。我创建了以下小程序来测试: namespace ConsoleTest { enum TestEnum { FirstElem
正如我在另一个 SO 问题中指出的那样,我遇到了 this article .当我通过 MSVC7.1 编译 boost 1.40 时出现了这个问题,并且弹出了几个 C4251 警告。 现在,在阅读上
我有以下弹出窗口代码(客户端请求)。它使用 eval ,我知道这是危险的。有没有办法重写下面的脚本,使其不使用 (eval)? /* exported popup_default , popup_he
NTFS 文件可以有对象 ID。可以使用 FSCTL_SET_OBJECT_ID 设置这些 ID .然而,msdn article说: Modifying an object identifier c
我一直在学习命令行参数解析。关于这个已经有很长的线索了,我不想在这里挑起一个: Using getopts in bash shell script to get long and short com
这个问题在这里已经有了答案: How to configure ContextMenu buttons for delete and disabled in SwiftUI? (4 个回答) 4 个月
为什么在 linux 的中断处理程序中禁止 printk 或 (I/O)。?在什么情况下中断处理程序中的 I/O 会导致 linux 系统中的死锁? 最佳答案 关于 printk(),它是侵入性的。例
不是 Invoking virtual function and pure-virtual function from a constructor 的重复项: 以前的问题与 C++ 03 相关,而不是
我正在使用 lateinit 属性以避免使用 ?运算符(operator)。我有很多 View 属性是第一次在 getViews() 函数中分配的。如果该功能不存在,我的应用程序将与来自 Kotlin
我最近在使用 fputs 时遇到了问题:当使用 fputs 在文本文件中打印一些字符串时,我碰巧得到了除 A-Z、a-z、0-9 之外的其他字符(不属于字符串的字符) .我绝对确保所有字符串都以空字符
在仅包含字节数组的结构上使用 #pragma pack(1) 是否危险/有风险?例如。这个: #pragma pack(1) struct RpcMessage { uint8_t proto
我是一名优秀的程序员,十分优秀!