如何根据post数据阻止请求?

2024-04-29

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

Example:

如果我在 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 中完成,但我确实设法在网站本身中找到了解决方法。将其添加到全局.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!");
    }
}

只是稍微抬起头。除非您知道自己在做什么,否则不要使用此功能。这将测试所有请求(并使用正则表达式),因此会减慢网站速度。它也不能解决所有恶意请求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据post数据阻止请求? 的相关文章

  • ASP.NET 如何在 Web API 中读取多部分表单数据?

    我将多部分表单数据发送到我的 Web API 如下所示 string example my string HttpContent stringContent new StringContent example HttpContent fil
  • 如何缓存 ASP.NET 网站以获得更好的性能

    我是一名网页设计师 通常设计不需要更新的企业网站 所以我想将输出缓存一天 我怎样才能做到这一点 此外 任何有关在慢速服务器上提高 ASP NET 性能的建议都被接受 请注意 ASP NET 缓存有一个bug http connect mic
  • ASP.NET 页面中的 WMV 文件

    如何在 ASP NET 网页中嵌入 WMV 文件 我希望它作为一个播放器可见 而不仅仅是一个链接 是否有 ASP NET 控件可以实现此目的 我在 VS 2008 工具栏上没有看到这个 在帮助中也找不到 我还没有准备好将此网站转移到 Sil
  • 服务器端的 ASP.NET 等效项包括

    虽然服务器端包含的经典 ASP 方法在 ASP NET 中有效 但我的印象是它不是首选方法 我 应该 如何达到同样的效果 这就是我现在正在做的事情 您现在有许多选项可以提供这种效果 但方式不同 用户控件 ascx 母版页 master 服务
  • 尝试从 C# 服务查询 IIS 时出现异常

    我从使用 C 编写的 Windows 服务调用以下代码 try ServerManager m new ServerManager if m null SiteCollection sites m Sites I get exception
  • 如果是持久(保持活动)连接,为什么我会在 Web 请求中到达 endOfStream?

    我有一个网络请求 它创建与服务器的持久 保持活动 连接 例如 webRequest ContentType application x www form urlencoded Set the ContentLength property o
  • 您认为 ASP.NET MVC 会与 ASP.NET Webforms 竞争吗?

    您认为 ASP NET MVC 会在 Microsoft Web 开发市场中占据重要份额吗 还是会占市场的 10 15 哦是的 它将让 Web 表单脱颖而出 我们已经看到了真正的 MVC 框架在 Java 世界中的价值 在 MS 世界中 这
  • ASP.NET MVC 动作过滤器

    有谁知道即使在 CATCH 块中 ActionFilterAttribute 类的 OnResultExecuted 方法是否也会执行 ie CookiesActions public ActionResult Login Usuarios
  • 在 ASP.NET 中创建自定义文化

    我想在 App GlobalResources 文件夹中创建一个名为 shopping en sg resx 的新加坡英语 en sg 资源文件 我在编译过程中遇到错误 错误 1 命名空间 资源 已经包含了一个定义 购物 c WINDOWS
  • 如何根据当前日期时间发现财政年度?

    我需要基于当前或今天的日期时间的财政年度 假设我们认为今天的日期是10 April 2011 那么我需要输出为Financial Year 2012在某些情况下 我需要以短格式显示相同的输出FY12 我想以两种方式显示 在我们的要求中 考虑
  • 如何在 IIS 8 中远程停止/启动应用程序池

    注意 每条线使用一行 我在 IIS 6 中使用了这些命令 它们工作得很好 Start get wmiobject namespace root MicrosoftIISv2 computername REMOTE SERVER class
  • 如何使用 JavaScript 上传文件而不进行回发?

    我正在 ASP NET 中进行文件上传 我用了
  • ASP.NET隐藏字段值设置

    我已经用谷歌搜索过这个 但不知道如何设置隐藏字段的值 我有以下代码
  • 将 VS2015 中的 ASP.NET Identity 中的 User Id 类型更改为 int

    默认情况下 VS 2015 中的 ASP NET Identity 使用字符串作为 AspNet 表的主键 我想使用 int 类型的 id 来代替 经过一些研究后发现 框架开箱即用地支持不同类型的 ID 在下面的答案中 我将展示要实现这一目
  • 有没有办法跨应用程序使用 ASP.NET Bundles

    我使用 ASP NET Web Optimization 包来捆绑和缩小 javascript css 文件 我有一些使用相同 javascript css 文件的 ASP NET 应用程序 现在我在每个应用程序中设置捆绑包 我想知道是否有
  • ASP.Net 的最佳免费文件管理器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 ASP.NET Core 中,有没有办法从 Program.cs 设置中间件?

    我正在为 ASP NET Core 网站构建一个支持库 我有一些需要启用的中间件 并且由于它们的作用 需要在任何其他中间件之前添加它们 我可以在 IWebHostBuilder 上创建一个扩展方法来添加服务 同样用于配置日志记录 但我没有看
  • 严重: getRealPathFromConn 错误

    目前我正在调试我们的应用程序中一个看似随机的错误 我将尽力提供尽可能多的细节 基本上一段时间后 我们服务器上某个应用程序的应用程序池就会停止 我必须启动它 或者有时重新启动 Coldfusion 或更糟糕的是机器才能再次运行 服务器日志表明
  • 如何在联系我们页面中使用用户电子邮件发送电子邮件?

    我正在创建一个联系我们页面 并且我想从该页面接收邮件 因为它的邮件来自用户邮件 我写了这段代码 var client new SmtpClient smtp gmail com 587 Credentials new NetworkCred
  • 将数据集导出到 EXCEL

    我使用以下代码将数据库表中的字段导出到 Excel 中 我想要做的是能够编写一条 SQL 语句从多个表中检索字段并将其导出到 Excel 中 这段代码只允许我导出一张表 另外 如何显示保存提示对话框 示例代码将不胜感激 非常感谢 prote

随机推荐