【问题标题】:How to decline malicious requests如何拒绝恶意请求
【发布时间】:2018-11-21 21:50:18
【问题描述】:

我最近接手了一个应用程序,我们最近进行了一次 appscan,我得到了一个标记为易受攻击的项目。报告建议的补救任务是拒绝恶意请求。报告称 appscan 尝试过:

对原始请求应用了以下更改:将 HTTP 标头设置为 'http://bogus.referer.ibm.com'

我在第一次运行 appscan 时标记了这个,并输入代码来检查是否提供了 urlreferer,如果提供了,请确保它与 url 中的主机相同,否则终止用户的会话并重定向到登录页。我们再次运行 appscan,它再次被标记,我不确定如何处理。

当我查看报告时,它显示它放入了伪造的引荐来源网址,服务器以 302 状态响应,重定向,然后请求登录,服务器以 202 响应,给出它。 Appscan 推理说:

相同的请求在不同的会话中发送了两次,并收到了相同的响应。 这表明没有一个参数是动态的(会话标识符仅在 cookie),因此应用程序容易受到此问题的影响。

但反应不总是一样的吗?如果检查失败后出现 302 和 202,则无论用户如何,都会出现重定向和登录页面。有谁知道如何处理这个?我猜我可以将用户的会话 id 放入重定向 url,这样 appscan 会看到是否不同,但我认为必须有另一种方法。

这是一个 .net 4 应用程序。使用 Session 对象跟踪用户,如果这很重要,则不使用表单身份验证。

【问题讨论】:

标签: c# asp.net


【解决方案1】:

设置视图状态用户密钥,参考:https://security.stackexchange.com/questions/19152/how-does-viewstate-protect-against-csrf 这使得在无法访问最新页面和您的 cookie 的情况下发送查询变得更加困难。

使用 HttpException 返回 403(您可能需要做一些额外的工作,以免它变成 500)

Throwing an HttpException always sends back HTTP 500 error?

应用程序扫描具有高度可识别的特征——它们会在同一分钟内引发 100 多个异常。作为您的错误记录基础设施的一部分,您可能希望在同一分钟内说 5 个异常后显示验证码,或者在应用程序扫描引发的错误(如非常长的 URL、.jsp 查询)上显示验证码.aspx 应用程序中的文件)。一旦 appscanner 被识别出来,您就会希望通过始终重定向到错误页面来毒化他们的会话,直到他们解决验证码。不利的一面是,在应用程序抛出异常后,用户看到验证码的可能性很小,比如当用户在文本框中输入 > 时出现安全错误。您可能希望也可能不希望为所有应用扫描程序(可能只是恶意扫描程序)实施此功能,具体取决于您组织中的激励措施。

【讨论】:

  • 我会试试 viewstate 键,这实际上来自我们内部使用的 ibm 工具,而不是来自外部攻击者的扫描。该工具虽然我相信以用户身份登录,然后弄乱了 url 和它发送到页面的请求以试图破坏某些东西。我会再次检查报告,如果攻击不是来自有会话的用户,我会看看是否能解决它。
  • 您可能已经明白这一点,但问题不在于用户没有会话(每个人都有会话),也不是他们没有经过身份验证。 CSRF 攻击会诱使合法用户执行包含会话和身份验证 cookie 的 http GET 和 POST,通常使用 XHR,但是,XHR 不会轻松访问最近请求的页面。这是一种复杂的攻击,也是一种复杂的防御。至于友好扫描与恶意扫描,我一直不明白为什么要扫描并修复所有漏洞,除了扫描简单高效。
【解决方案2】:

ngx_dynamic_limit_req_module ref

ngx_dynamic_limit_req_module用于动态锁定IP并定期释放

【讨论】:

    猜你喜欢
    • 2019-03-05
    • 2022-10-23
    • 1970-01-01
    • 2021-08-10
    • 2016-11-18
    • 2019-02-04
    • 2020-01-03
    • 2015-07-26
    • 2014-06-08
    相关资源
    最近更新 更多