asp.net 用于匹配“潜在危险的请求,表单值”的规则

nzkunb0c  于 2023-05-30  发布在  .NET
关注(0)|答案(2)|浏览(95)

我想知道使用什么规则来确定什么是潜在危险的表单值,以便我可以编写客户端验证以防止它击中服务器。理想情况下,我想知道框架如何确定哪些是潜在危险的字符组合,这样我就可以在自定义验证器中使用相同的规则来防止它们攻击服务器。

ergxz8rk

ergxz8rk1#

理由:

1.当在文本输入中输入valid html时,通常会出现此错误。即带有打开和关闭html标签<****>
1.这也是由于输入html实体,如&nbsp;&amp;&lt;&gt;&quot;等。
1.简单地说,如果text-input包含一些符号,如**">,&,<,="**;等,将被认定为危险值。

解析可以用途:

<system.web>
    <httpRuntime requestValidationMode="2.0" />
</system.web>

在您的web.config中验证此类输入。

您可以使用以下命令**htmlencode**输入:

String clean_value = Server.HtmlEncode(TextBox1.Text);

以下文章可能对您有所帮助:
How To Catch HttpRequestValidationException
http://www.cryer.co.uk/brian/mswinswdev/ms_vbnet_server_error_potentially_dangerous.htm
A potentially dangerous Request.Form value was detected from the client

希望这能帮上忙。

xtfmy6hx

xtfmy6hx2#

validateRequest = false一般不推荐使用。这就是我所做的:
在服务器端,您可以使用以下命令:
在www.example.com中创建一个隐藏字段asp.net并对其进行编码。

hiddenFieldMessage.Value = Uri.EscapeDataString(dangerousString);

然后在Javascript中,创建一个文本区域并解码编码值。

<script>
    (function () {
        
        const content = document.getElementById('<%= hiddenFieldMessage.ClientID %>').value;
        // decode the content back to html
        var textArea = document.createElement("textarea");
        textArea.innerHTML = decodeURIComponent(document.getElementById('<%= hiddenFieldMessage.ClientID %>').value);
        const content = textArea.value;  // decoded value
   })

这样,就不需要关闭验证(这将使您的网页容易受到注入攻击)

相关问题