有没有比Forms认证更安全的认证方式

Is there a more secure means of authentication than Forms authentication

我想知道是否有比表单身份验证更安全的身份验证方式?我不喜欢这样的事实,即当您使用表单身份验证登录网站时,您可以将 cookie 复制到另一台计算机,然后登录。我意识到,如果该网站是通过 ssl 浏览的,那么中间就没有人了攻击,但我仍然不喜欢我的网站以这种方式存在漏洞。

除了 windows 身份验证之外,还有更好的选择吗?

谢谢

您可以查看基于令牌的东西,但您会发现总是有东西存储在客户端并通过身份验证而不是实际用户凭据(用户名和密码)。如果您假设攻击者有能力访问客户端上的内容,那么它是会话 ID 还是令牌并不重要。

当使用基于令牌的身份验证时,令牌大部分时间不保存在 cookie 中,而是例如保存在浏览器内存中(Javascript 对象),或者更糟糕的是,保存在 localStorage 等地方。这实际上 不如 httpOnly cookie 中的旧会话 ID 安全,它可以安全地防止跨站点脚本,而不是浏览器中的几乎任何其他东西。

所以请注意,对于您选择的几乎任何解决方案,基本上发生的事情是您将您的用户凭据交换为某种令牌,然后您将其用于身份验证,并且对于会话而言,令牌等同于您的凭据,传统会话和令牌之间没有太大区别。即使是 Windows auth 也做同样的事情,但是在 OS 级别的下面一层,这使得它不太容易受到像 XSS 这样的攻击,但是它很容易受到基于自动发送的会话 ID 的攻击(比如CSRF).

如果您想减轻攻击者窃取会话 ID 的威胁,例如,您可以设计您的应用程序,使会话绑定到客户端标识符,如客户端 IP 地址。这样即使会话 ID 被盗,攻击者仍然无法使用它。作为对该威胁的另一种缓解措施,您可以阻止并发会话,这实际上意味着终止登录用户的所有其他会话的逻辑。请注意,这些事情并非特定于传统会话,这同样适用于基于令牌的身份验证,只有实施方式不同。