【发布时间】:2019-02-18 10:15:08
【问题描述】:
ASP.Net Core 通过在固定登录尝试次数后锁定帐户来防止暴力猜测密码。
但是是否有一些针对凭证填充的保护措施,攻击者尝试大量登录,但总是使用不同的用户名?锁定帐户无济于事,因为每次尝试都会更改帐户。 但也许有一种方法可以锁定 IP 以防止多次登录尝试或其他一些防止凭证填充的好主意?
【问题讨论】:
标签: asp.net-core security passwords rate-limiting
ASP.Net Core 通过在固定登录尝试次数后锁定帐户来防止暴力猜测密码。
但是是否有一些针对凭证填充的保护措施,攻击者尝试大量登录,但总是使用不同的用户名?锁定帐户无济于事,因为每次尝试都会更改帐户。 但也许有一种方法可以锁定 IP 以防止多次登录尝试或其他一些防止凭证填充的好主意?
【问题讨论】:
标签: asp.net-core security passwords rate-limiting
我建议对 redis 使用速度检查,这基本上只是限制某些 IP。此外,一些欺诈者还会轮换 IP,您还可以检测到登录发生的频率何时更频繁(例如 10 倍标准)并开始阻止该短窗口的所有登录。我写了一篇博客文章,详细介绍了上述一些内容。代码都在节点中,但我确实给出了一些高级示例,说明我们如何在 Precognitive(我目前的演出)中阻止欺诈。随着我在帐户接管系列中发布更多内容,我将在接下来的几个月中继续构建代码。
https://medium.com/precognitive/a-naive-demo-on-how-to-stop-credential-stuffing-attacks-2c8b8111286a
【讨论】:
IP 限制是很好的第一步,但遗憾的是它无法阻止大量现代撞库攻击。在过去的几年里,精明的凭证填充者的策略已经发展到变得越来越复杂。
要真正有效地阻止凭证填充,您需要关注的不仅仅是 IP。攻击者会轮换 IP 和 User-Agent,他们还会欺骗 User-Agent 值。有效的防御策略基于对异常 IP 和 User-Agent 活动的实时分析,以及增强特异性的附加组件(例如基于浏览器或基于移动应用程序的指纹识别)来识别和阻止攻击。
我写了一篇博客文章,探讨了 2020 年的两次撞库攻击,我称之为攻击 A(低复杂性)和攻击 B(高复杂性)。
低复杂度示例攻击 A 具有以下特点:
高复杂度示例攻击 B 具有以下特点:
您可以看到,使用攻击 A,每个 IP 地址大约有 100 次登录尝试。 IP 速率限制可能在这里有效,具体取决于限制。
但是,对于攻击 B,每个 IP 地址只有 12 次登录尝试。很难说 IP 速率限制在这种情况下是否有效。
这是我的帖子,其中包含更深入的数据:https://blog.castle.io/how-effective-is-castle-against-credential-stuffing/
全面披露:我在 Castle 工作,我们提供基于 API 的产品来防止凭证填充。
【讨论】: