问题标签 [dangerous-request]
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.
c# - ASP.NET 4.5 从客户端检测到潜在危险的 Request.Form 值
我在用户控件上嵌入了一个所见即所得的编辑器,该控件显然会进入网页。当我提交页面时,我收到“从客户端检测到潜在危险的 Request.Form 值”异常。在以前版本的 .NET 中,我只需要关闭页面的 ValidateRequest。
但是,在 .NET 4.5 中,它似乎具有 ValidateRequestMode 的属性。当我将其设置为禁用时,我仍然继续收到错误。关于 .NET 4.5 错误还没有太多,所以有人知道解决方案吗?
提前致谢。
asp.net - ASP.net 从客户端检测到潜在危险的 request.form 值
我的 dmz 服务器上的 ASP.net Web 应用程序出现异常。不太确定它是什么原因造成的以及如何处理错误这是我正在记录的异常
我尝试复制并粘贴到文本框中,看看这是否是复制错误的方法。任何帮助将不胜感激。
asp.net - 关于带有变音符号的潜在危险 Request.Form 的建议
我的公司安全政策规定我不能关闭ValidateRequest
表单网站的属性。
我从该站点收到有关潜在危险Request.Form
输入的错误报告。
我可以从所有错误中看出,危险正在从地址字段中的外来字符(例如德语、带有变音符号的挪威字符)中发现。
我对这些字符如何变成 html 编码有点困惑,因为危险的字符组合就像å
哪个是ö
字符。
从客户端检测到潜在危险的 Request.Form 值(ctl00$ContentPlaceHolder1$tbxDeliveryAddress="...last As B & #229;smosjyen 4 Mo...")
显然这不是恶意的,我需要允许客户输入他们的地址,包括变音符号。我想知道客户是否在不知不觉中通过复制和粘贴来做到这一点,所以我用两个标签和一个文本框进行了实验,一个标签编码了一些带有变音符号的文本,另一个标签只是打印了变音符号(我检查了呈现页面上的 html 源代码,这是正常的)然后我将每个标签依次复制并粘贴到一个文本框中并提交了表单,但都没有出错。
所以我很困惑这个输入是如何来自客户的。我发现很难相信他们å
在输入地址时会实际输入文本框。由于我真的不知道外国键盘是如何工作的,任何人都可以对此有所了解吗?
我怎样才能阻止这个非恶意文本被 .net 中的这个功能捕获而不转出ValidateRequest
属性?对于试图无辜地输入他们的送货地址的客户来说,这真的很痛苦。
编辑
我注意到,在错误消息中,文本实际上来自一个多行文本框字段,该字段生成 textarea html 控件。我想知道这个特定控件是否使用 html 编码文本呈现内容?我这样说是因为最终用户实际上无法直接在此字段中进行编辑,它会自动填充,并弹出一个模式来编辑各个行上的地址。多行文本框是否会自动对其内容进行 html 编码?
asp.net - 为什么 ASP.NET 危险请求验证以这种方式工作?
任何人都可以通过以下问题为我指明正确的方向。
ASP.NET 中的默认“危险请求”验证禁止输入,例如
但同时允许像这样的输入
这里的理性是什么?
java - 检查 Vaadin 中是否存在会话变量
对比
这些是使用 Vaadin 会话管理的正确方法之一吗?我找不到有关在 Vaadin 中获取和设置会话的可理解文档。
我当前的问题: 如果我尝试获取会话变量,我得到一个 nullpointerException,我试图吞下它并继续,但这使得 Vaadin 内爆。
是否有一种安全的方法来检查是否设置了 Vaadin 会话(和特定变量)?
我必须先初始化会话才能使用变量吗?
更具体地说,我想在用户被重定向到登录屏幕之前检查会话是否存在。如果用户未登录,则检查将引发 nullpointerException,因此未登录的用户无法加载 loginForm。
问题@如何在 Vaadin 中获取所有会话与我的问题无关。
还有一件事
不会让 Vaadin 内爆,所以我可能只是在做 Java Fail™</p>
任何帮助将非常感激。
c# - .Net MVC HttpRequest 到 raw 抛出潜在的危险请求
我有一个将所有 HttpRequest 参数(标头、查询、输入等)转换为字符串的方法
但是即使我添加[ValidateInput(false)]
到控制器我仍然会从下面的方法中抛出异常,我只需要字符串形式的httprequest,没有危险的动作将对象转换为字符串
我需要禁用此控件,这会阻止我采用字符串形式的请求对象。
我怎样才能做到这一点
谢谢
compiler-errors - Deviant Rust:如何禁用所有可能的警告和检查?
假设我想编写用rustc
. 我可以在不重新编译 Rust 的情况下禁用多少个编译器检查、类型检查和警告?我将如何去做呢?
我正在寻找 Perl 等价物no warnings; no strict;
显然我知道这不是一个好建议。我想了解rustc
有趣的方式的配置选项。
c# - 将 JSON 返回到客户端时,“从客户端检测到潜在危险的 Request.Form 值”
我有一个允许用户编辑电子邮件模板的应用程序。电子邮件模板使用 HTML,因此客户端将 HTML 发送到控制器。我正在使用 Jodit HTML 编辑器 ( https://xdsoft.net/jodit/ ) 作为消息正文,因此用户不必自己了解 HTML。我可以发布表单并且控制器接受请求,因为视图模型装饰有适当的 [AllowHtml] 属性;的确,ModelState.IsValid
是真的。数据返回给客户端时发生错误;控制器不返回 json 对象,而是返回错误。
问题是,如何防止 asp.net 在返回时将此标记为危险?
请注意,此应用程序处理 PII,因此不验证请求不是一种选择。
这是错误(添加完整的错误以防有人发现有帮助):
“/ReallyAwesomeApp”应用程序中的服务器错误。
从客户端检测到具有潜在危险的 Request.Form 值(messagetext="<font color="#000000...")。
说明: ASP.NET 在请求中检测到具有潜在危险的数据,因为它可能包含 HTML 标记或脚本。这些数据可能表示试图破坏您的应用程序的安全性,例如跨站点脚本攻击。如果这种类型的输入适合您的应用程序,您可以在网页中包含代码以明确允许它。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=212874。
异常详细信息: System.Web.HttpRequestValidationException:从客户端检测到潜在危险的 Request.Form 值(messagetext="<font color="#000000...")。
源错误:
在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。
堆栈跟踪:
[HttpRequestValidationException (0x80004005):从客户端检测到潜在危险的 Request.Form 值 (messagetext="<font color="#000000...")。] System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection) +322
System.Web.<>c__DisplayClass280_0.b__0(String key, String value) +18
System.Web.HttpValueCollection.EnsureKeyValidated(String key) +86
System.Web.HttpValueCollection.Get(String name) +17
System .Web.Caching.OutputCacheModule.CreateOutputCachedItemKey(字符串路径,HttpVerb 动词,HttpContext 上下文,CachedVary cachedVary)+694 System.Web.Caching.OutputCacheModule.CreateOutputCachedItemKey(HttpContext 上下文,CachedVary cachedVary)+56
System.Web.Caching.OutputCacheModule.OnLeave(Object source, EventArgs eventArgs) +1226
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +200 System.Web.<>c__DisplayClass285_0.b__0() +24 System.Web.StepInvoker.Invoke(Action executionStep) +100
System.Web.<>c__DisplayClass4_0.b__0() +17
Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule.OnExecuteRequestStep(HttpContextBase context, Action step) +64
System.Web.<>c__DisplayClass284_0.b__0(Action nextStepAction) +54 System.Web.StepInvoker.Invoke(Action executionStep) +84 System.Web.<>c__DisplayClass4_0.b__0() +17 Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule.OnExecuteRequestStep (HttpContextBase context, Action step) in E:\A_work\21\s\WEB\Src\Web\Web.Shared.Net\ApplicationInsightsHttpModule.cs:164 System.Web.<>c__DisplayClass284_0.b__0(Action nextStepAction) +54 System .Web.StepInvoker.Invoke(Action executionStep) +84
System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +100
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +73版本信息:Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.8.4075.0
这是我的视图模型:
这是我的回归模型(在 SO 上找到这个小宝石):
这是我的控制器方法:
最后是通过 JQuery 调用的 Ajax:
asp.net-mvc - 由于 URL 翻倍而存在潜在危险的 Request.Path
我正在维护一个使用 Umbraco CMS 7.15.7 的旧版 .NET 4.7.2 MVC 应用程序。我们开始收到在 Azure Application Insights 中注册的失败请求,并显示以下消息
A potentially dangerous Request.Path value was detected from the client (:).
我已经看到它与诸如此类的请求有关(以下是通常出现在 Application Insights 日志中的示例请求,我刚刚更改了真实的网站域):
我意识到问题(:) 是因为url
最终name
以某种方式“加倍”(https://www.sample-site.com/companies/ https:/www.sample-site.com/companies/sample-company
)。我的目标不是允许这样的请求,而是找到它们的原因。
以下是我对可能导致此问题的原因的结论:
- 失败的请求似乎定期发生,并且批量发生 - 每 5-10 小时。一个产品页面永远不会在批量中被调用两次。这让我相信它们可能是由机器人引起的,但是这种模式并不总是很清楚——两个请求之间会有几分钟的间隔。
- 这些请求似乎主要发生在 Umbraco 中某个节点(在本例中为
companies
节点)下的产品页面。但是,在 Umbraco 中该节点下的某些产品页面没有出现。 - 失败的请求包含只有一个“/”的 https:/,这很奇怪,似乎这部分在某些时候被连接起来
- 节点下的少数成功请求
companies
始终具有 301 状态代码,这使我相信该问题可能与某处的重定向规则损坏有关 canonicalUrl
在我们为某些产品页面(主要是产品页面节点的属性)更改 Umbraco 中的一些内容后,错误开始发生。但是话又说回来,有些产品页面确实填写了属性,但没有遇到问题。- 我永远无法将这些请求与 Application Insights 中的用户或会话相关联
我知道这可能过于具体而无法调试,并且这可能是由几乎任何事情引起的 - 但我确实有一种感觉,它与 Umbraco 有某种关系,所以有人在 Umbraco 方面有经验并且知道该name
属性最终如何成为生成的GET /companies/ https:/www.sample-site.com/companies/sample-company
可能会导致我找到一些线索?
作为附加信息,以下是对 Umbraco 中同一节点下的产品页面的成功执行请求:
node.js - Base64 与 exe 内容
我有一个 Node.js 应用程序,它在其有效负载成员之一中获取包含 Base64 的请求。该 Base64 内容表示要附加的编码文件。我必须确定 Base64 是否由 exe/bat 文件组成。我找不到识别源文件类型的方法。欣赏任何想法。