gpt4 book ai didi

asp.net - 如何阻止基于发布数据的请求?

转载 作者:行者123 更新时间:2023-12-04 17:55:49 37 4
gpt4 key购买 nike

在 IIS 中,我可以设置基于 url 或查询字符串的请求过滤,这允许我阻止一些恶意的 GET 请求,但这对发布数据不起作用。

例子:

如果我在我的 web.config 中设置它

<security>
<requestFiltering>
<filteringRules>
<filteringRule name="Stop spam" scanUrl="false" scanQueryString="true">
<denyStrings>
<clear />
<add string="spam" />
</denyStrings>
<scanHeaders>
<clear />
</scanHeaders>
<appliesTo>
<clear />
</appliesTo>
</filteringRule>
</filteringRules>
</requestFiltering>
</security>

在查询字符串中包含单词“垃圾邮件”的请求将被阻止。但是我还需要阻止包含这个词的 POST 请求(例如来自表单)。我可以设置一个拒绝规则来过滤和拒绝基于 POST 数据的请求吗?如果可以,我该怎么做?

最佳答案

这似乎无法在 IIS 中完成,但我确实设法在站点本身中找到了解决方法。将此添加到 Global.asax 似乎可以完成这项工作:

protected void Application_BeginRequest(object sender, EventArgs e)
{
var sr = new System.IO.StreamReader(Request.InputStream);
string content = sr.ReadToEnd();
var rule = @"spam";
if
(
Regex.IsMatch(content, rule, RegexOptions.IgnoreCase) ||
Regex.IsMatch(Request.Url.Query, rule, RegexOptions.IgnoreCase)
)
{
// TODO: Do some logging here
throw new Exception("Get off my lawn!");
}
}

稍微提醒一下。除非您知道自己在做什么,否则不要使用它。这将测试所有请求(并在那时使用正则表达式),因此它会减慢站点速度。它也不会解决所有恶意请求。

关于asp.net - 如何阻止基于发布数据的请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40508263/

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