问题标签 [request-validation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1836 浏览

asp.net-mvc - “从客户端 (%) 检测到潜在危险的 Request.Path 值。” 但请求似乎很好

ASP.Net MVC 3.0、.NET 4.0、IIS 7

我知道它已经被问过很多次了,但我仍然无法弄清楚它有什么问题。

我只是偶尔收到这些消息(每天不到 1 条),而且我每天的访问量约为 4k。

这是错误报告的链接:
http ://wowreforge.com/elmah.axd/detail?id=6CBE6DCA-88C2-45E7-AF53-A53061B8E25D

(注意有指向 XML 和 JSON 详细报告的链接)

首先要注意的是 URL (PATH) 包含 UTF-8 编码字符: /US/Warsong/Spartan%C3%B6
第二件事,请求是HEAD,而不是GET
我认为这些细节中的任何一个都不应该导致我收到的错误.

原来的网址是:
http ://wowreforge.com/US/Warsong/Spartan%C3%B6?reforge=--52145254126214646464--3214325254&crit=7&dodge=90&exp=19&haste=1&hit=10&mastery=100&parry=67&spi=0

我已经使用 GET 和 HEAD 请求尝试了此 URL,但无法重现该错误。

还有什么我可以戳的吗?

0 投票
2 回答
881 浏览

c# - AllowHtml、HttpRequestValidationException 和 ModelState

我有这个视图模型

我不想在其中抛出带有 html的HttpRequestValidationExceptionif提交,而是向. 我怎么能那样做?.FooModelState

0 投票
4 回答
23902 浏览

c# - 如何在不将 RequestValidationMode 设置为 2.0 的情况下禁用请求验证?

我们刚刚升级到 ASP.NET 4.0,发现 requestValidation 不再有效。MSDN 文档建议我们需要将web.config 中的requestValidationMode设置为 2.0:

  • 4.0(默认)。HttpRequest 对象在内部设置一个标志,指示在访问任何 HTTP 请求数据时都应触发请求验证。这保证了在请求期间访问 cookie 和 URL 等数据之前触发请求验证。配置文件中 pages 元素(如果有)或单个页面中 @Page 指令的请求验证设置将被忽略。
  • 2.0。请求验证仅对页面启用,并非对所有 HTTP 请求启用。此外,配置文件中 pages 元素(如果有)或单个页面中 @Page 指令的请求验证设置用于确定要验证哪些页面请求。

这对我们有用,但我有点困惑。似乎我们将其置于旧版/兼容模式中。当然应该可以有 4.0 的行为,但仍然可以选择在页面上关闭它?

0 投票
1 回答
257 浏览

asp.net - 不发送表单数据的取消按钮

在 UpdatePanel 中,我有两个永远不可见的 PlaceHolders。在一个 PlaceHolder 中,我让用户选择要编辑的文章,当文章被选中时,它会显示在另一个 PlaceHolder 中。发生这种情况时,将第一个的可见性设置为 false 并打开另一个。

现在,当用户编辑文章时,有一些字段和两个按钮:一个按钮标记为“确定”,用于将表单数据发送到服务器,另一个按钮标记为“取消”,用于发送。只有当用户单击确定按钮时,我才需要将表单数据发送到服务器,因为这是唯一需要处理它的情况。因此,我可以让系统知道单击取消按钮时它不应该发送表单数据吗?

之所以提出这个问题,是因为起初,当我单击“取消”按钮时,我从用于文章正文的 tinyMCE 组件(因为它包含 HTML)中收到了 RequestValidation 错误。现在我已关闭此页面的 RequestValidation 并手动进行验证。

但是无论如何,当单击取消按钮时,我可以关闭表单数据发送吗?

0 投票
1 回答
813 浏览

asp.net - StackExchange 如何处理路由 URL 中的无效字符?

Scott Hanselman 关于在请求 URL 中使用古怪字符的帖子解释了如何绕过 IIS 和 ASP.Net 安全功能以允许在 URL 中传递无效字符......但我确信堆栈交换与他的不同方法将使该站点对讨厌的攻击和错误敞开大门。


StackExchange 具有指向标签的链接,例如以请求编码C#的形式发送到 Web 服务器,如下所示:GET

诀窍是......它们作为请求路径值(例如路由参数)发送,而不是作为查询字符串中的值......

如果您看到 Hanselman 的文章,他建议只有关闭 RequestValidation 之外的其他几个安全功能(后者允许 URL 的查询字符串部分中的编码字符)才有可能。

问题

  1. StackExchange 如何做到这一点?

  2. 如果按照 Hanselman 在他的博客中说明的方式进行,他们会采取哪些额外措施来保护自己?

0 投票
1 回答
2229 浏览

asp.net-mvc-3 - 如何将 ASP.NET MVC3 请求验证异常作为模型或属性验证错误处理

我的问题希望非常直截了当。提交表单后,我想将所有具有无效字符(特别是 HTML)的属性(字段)标记为模型错误。我面临的问题是请求验证在模型绑定/ 验证之前启动,我得到 HTTP 500...我正在寻找的是如何“全局捕获请求验证异常并将它们显示为模型错误”。此外,我不想“剥离”HTML 标签,我想通知用户他们的输入无效。[AllowHtml]<httpRuntime requestValidationMode="2.0" />

我考虑过使用正则表达式验证属性来查找错误的输入,但正如我所提到的,ASP.NET MVC3 上的请求验证发生在模型绑定/验证之前,所以这是不行的......

可以在此处找到对请求验证的非常好的概述。

0 投票
4 回答
8055 浏览

asp.net-web-api - 如何在 ASP.NET WebAPI 中覆盖 RequestValidation

我在处理包含“危险字符”作为 Web API URL 一部分的请求时遇到问题。Url 包含一个 & ,它是正确编码的 Url,但仍会导致请求验证 ASP.NET 错误。

与 MVC 不同,似乎没有 [ValidateInput(false)] 属性来强制和禁用此功能。

0 投票
2 回答
1827 浏览

asp.net - 当用户使用 CAS SSO 注销时,ASP.NET MVC 会触发 HttpRequestValidationException

我们正在使用Jasig .NET CAS 客户端与我们组织的 CAS SSO 服务器进行交互。

但是,我们注意到在 ASP.NET MVC 3(我假设这也会影响 ASP.NET WebForms)应用程序中,当用户注销时,我们会在错误日志中看到以下错误:

我不相信这是用户收到的错误消息——它似乎只被服务器看到。就用户而言,注销是成功的。

有什么方法可以让 ASP.NET MVC 停止尝试验证这些类型的请求?我知道我可以完全禁用请求验证,但这是不可能的。带有连字符的网站对此有一个很好的问题,但不是一个真正可以接受的答案:

将以下设置添加到 web.config:

<httpRuntime requestValidationMode="2.0" />

设置此值后,U 可以通过设置 validateRequest="false" 来禁用请求验证

那么,有没有办法在不完全关闭它的情况下禁用此请求的 ASP.NET 验证?

编辑:这也很难调试,因为这个请求来自 CAS 服务器,而不是来自用户的浏览器。我认为这是 CAS 服务器试图通知所有正在运行的应用程序用户已注销(单点注销)。所以我们只在生产中收到这个错误,而不是在本地测试时。

0 投票
1 回答
539 浏览

jquery - 当从 jQuery.ajax 接收数据类型为“json”的帖子时,asmx 会跳过请求验证

我有一个带有字符串参数的 ASP.NET Web 服务 (asmx) 函数。如果 dataType 未设置为 json (ValidateRequest="true"),则内置请求验证应捕获 HTML 标记,并且在使用自动生成的 localhost 测试页面或使用 jQuery 的 ajax/post 时有效。

WithdataType:"json" HttpRequestValidationException没有被触发:

如果我删除contentTypedataType得到预期的HttpRequestValidationException.

这让我的 ws 很脆弱。不幸的是,WCF 不是一种选择。

0 投票
1 回答
6026 浏览

asp.net-mvc - AngularJS 找不到 XSRF-TOKEN cookie

我将 Angular 1.0.4 与 ASP.NET MVC4 + Web API 项目一起使用。我试图利用 Angular 的 CSRF 保护无济于事。我可以看到我正在传递一个名为 XSRF-TOKEN 的 cookie,但是当 angular 尝试将该值添加为响应中名为 X-XSRF-TOKEN 的标头时,该值显示为未定义。我尝试按照此处的建议进行操作,但 HTML 尚未呈现,因此未找到任何元素。

我可能会错过什么?由 ASP.NET MVC 生成的 RequestVerificationToken cookie 是否受到 javascript 访问的保护?

此外,是否可以让角度懒惰地检索 cookie 或表单输入值?如果是这样,怎么做?我找不到任何有关如何执行此操作的文档。