身份认证漏洞
什么是认证
身份认证是验证给定用户或客户端身份的过程。换句话说,这涉及确保他们确实是他们声称的身份。网站至少部分暴露给通过设计连接到Internet的任何人。因此,强大的身份认证机制是有效的Web安全的组成部分。
可以将三种类型的身份验证分为三种身份验证因素:
- 知道一些信息,例如密码或安全问题的答案。这些有时称为“知识因素”。
- 拥有的东西,即手机或安全令牌之类的物理对象。这些有时被称为“占有因素”。
- 正在做的事情,例如您的生物特征识别或行为模式。这些有时称为“固有因素”。
身份认证机制依赖于一系列技术来验证这些因素中的一个或多个。
身份验证是验证用户确实是他们声称的身份的过程,而授权涉及验证用户是否被允许做某事。
身份验证漏洞如何产生?
广义上讲,身份验证机制中的大多数漏洞是通过以下两种方式之一产生的:
- 身份验证机制之所以薄弱,是因为它们无法充分防御暴力攻击。
- 实施中的逻辑缺陷或较差的编码使攻击者可以完全绕过身份验证机制。有时将其称为“中断身份验证”。
在Web开发的许多领域中,逻辑缺陷只会导致网站异常运行,这可能是安全问题,也可能不是安全问题。但是,由于身份验证对于安全性至关重要,因此,有缺陷的身份验证逻辑使网站暴露于安全问题的可能性明显增加。
易受攻击的身份验证有什么影响?
身份验证漏洞的影响可能非常严重。一旦攻击者绕过身份验证或将其暴力破解到另一个用户的帐户中,他们就可以访问受感染帐户拥有的所有数据和功能。如果他们能够入侵系统管理员等高特权帐户,则他们可以完全控制整个应用程序,并有可能获得对内部基础结构的访问权限。
即使损害低特权帐户,也仍可能使攻击者获得他们不应该拥有的数据的访问权限,例如商业上敏感的商业信息。即使该帐户无法访问任何敏感数据,它也可能仍然允许攻击者访问其他页面,从而提供了进一步的攻击面。通常,从公开访问的页面上将无法进行某些高严重性攻击,但是从内部页面上则可能是可能的。
身份验证机制中的漏洞
网站的身份验证系统通常由几种可能发生漏洞的不同机制组成。一些漏洞广泛适用于所有这些情况,而其他漏洞则更特定于所提供的功能。
- 基于密码的登录的漏洞
- 多因素身份验证的漏洞
- 其他身份验证机制的漏洞
如何保护您的身份验证机制
注意用户凭证
如果无意中向攻击者披露了一组有效的登录凭据,那么即使是最强大的身份验证机制也无效。永远不要通过未加密的连接发送任何登录数据。尽管可能已经为登录请求实现了HTTPS,但是请确保也通过将所有尝试的HTTP请求也重定向到HTTPS来实施此操作。
还应该审核您的网站,以确保没有用户名或电子邮件地址通过可公开访问的配置文件公开或反映在HTTP响应中。
不要指望用户的安全性
严格的身份验证措施通常需要用户付出额外的努力。人性使得一切不可避免,一些用户将找到方法来节省自己的精力。因此,您需要尽可能实施安全行为。
最明显的例子是实施有效的密码策略。一些更传统的策略失败了,因为人们将自己的可预测密码撬入了策略中。相反,实现某种简单的密码检查器会更有效,该检查器允许用户尝试使用密码并实时提供有关其强度的反馈。一个流行的示例是JavaScript库zxcvbn,它是由Dropbox开发的。通过仅允许使用密码检查器评价较高的密码,您可以比传统策略更有效地强制使用安全密码。
防止用户名枚举
如果发现系统上存在用户,则攻击者很容易破坏您的身份验证机制。甚至在某些情况下,由于网站的性质,知道某个人拥有帐户的知识本身就是敏感信息。
无论尝试的用户名是否有效,使用相同的通用错误消息并确保它们确实相同是很重要的。我们应该始终为每个登录请求返回相同的HTTP状态代码,最后,使在不同情况下的响应时间尽可能地难以区分。
实施强大的暴力保护
鉴于构建暴力攻击的过程如此简单,至关重要的是确保采取措施防止或至少破坏任何尝试进行暴力登录的尝试。
一种更有效的方法是实施严格的基于IP的用户速率限制。这应该包括防止攻击者操纵其明显IP地址的措施。理想情况下,您应该要求用户在达到特定限制后,每次尝试登录时都完成CAPTCHA测试。
请记住,这不能保证完全消除暴力破解的威胁。但是,使过程尽可能繁琐和手动,会增加任何可能的攻击者放弃并寻找较软目标的可能性。
实施适当的多因素身份验证
尽管多因素身份验证可能不适用于每个网站,但正确完成后,它比单独基于密码的登录要安全得多。请记住,验证同一因素的多个实例不是真正的多因素身份验证。通过电子邮件发送验证码本质上只是单因素身份验证的一种更为冗长的形式。
基于SMS的2FA在技术上正在验证两个因素(你所知道的和你所拥有的)。但是,例如,由于SIM交换而造成滥用的可能性意味着该系统可能不可靠。
理想情况下,应使用可直接生成验证码的专用设备或应用来实施2FA。由于它们是为提供安全性而专门设计的,因此通常更安全。
最后,与主要身份验证逻辑一样,请确保2FA检查中的逻辑是正确的,以便不易被绕开。
身份认证漏洞可能导致攻击者轻易获取用户数据或完全控制应用程序。了解这些漏洞如何产生,如弱密码策略和逻辑缺陷,以及它们可能带来的严重后果,如数据泄露和内部基础设施访问。为防范此类风险,应实施强密码策略,防止用户名枚举,应用多因素身份验证,并加强暴力攻击防护。此外,保护用户凭证和避免依赖用户安全性也是关键。
1495

被折叠的 条评论
为什么被折叠?



