主持人注意: 这个问题不适合我们的问题和答案格式,目前适用于 Stack Overflow 的具体性规则. 我们通常使用“历史锁”用于内容仍然有价值的问题. 但是,这个问题的答案是积极维护的,历史锁不允许编辑答案。

基于表格的网站验证

我們認為 Stack Overflow 不僅應該是非常具体的技術問題的資源,而且應該是如何解決常見問題的變化的一般指南。

它应该包括主题如:

如何登录 如何登录 如何保持登录 如何管理Cookie(包括推荐设置) SSL/HTTPS加密 如何存储密码 使用秘密问题 已忘记用户名/密码功能 使用虚假信息 防止跨网站请求漏洞(CSRF) OpenID “记住我” 检查框 浏览器自动完成用户名和密码 秘密 URL(由 digest 保护的公共 URL) C

角色和授权 HTTP 基本验证

请帮助我们:

提示子主题 提交关于这个主题的好文章 编辑官方答案


当前回答

基本上,在登录时唯一的实用方法是使用 HTTPS 或其他基于证书的加密系统(例如 TLS)或经过验证和测试的挑战响应系统(例如,基于 Diffie-Hellman 的 SRP)。

CAPTCHAS 反对人类

知道CAPTCHA的实施不是相同的;它们往往不是人可解决的,其中大多数实际上是对机器人无效的,所有这些都是对廉价第三世界劳动无效的(根据OWASP,目前的饮料价格为每500美元),一些实施可能在某些国家是技术上非法的(参见OWASP认证骗局)。

一旦服务器已验证登录和密码对您的用户数据库并发现匹配,系统需要一种方式来记住,浏览器已验证。

第三部分:使用秘密问题

第四部分:忘记密码功能

第七部分:分布式残酷力量攻击

其他回答

首先,一个强烈的信念,这个答案不是最适合这个准确的问题,它绝对不应该是顶级答案!

我将继续提到Mozilla提出的浏览器ID(或可能更准确地说,验证电子邮件协议)在寻找升级途径,以便在未来获得更好的验证方法。

我会这样总结一下:

Mozilla 是一個非營利的價值,與尋找這個問題的好解決方案相一致. 現實在今天是,大多數網站使用基於表格的認證 基於表格的認證有很大的缺點,這是一個增加的冒險。

这不是严格的“基于表格的网站验证”。但是,这是一个努力,从当前的标准的基于表格的验证转向一些更安全的东西:浏览器支持的验证。

基本上,在登录时唯一的实用方法是使用 HTTPS 或其他基于证书的加密系统(例如 TLS)或经过验证和测试的挑战响应系统(例如,基于 Diffie-Hellman 的 SRP)。

CAPTCHAS 反对人类

知道CAPTCHA的实施不是相同的;它们往往不是人可解决的,其中大多数实际上是对机器人无效的,所有这些都是对廉价第三世界劳动无效的(根据OWASP,目前的饮料价格为每500美元),一些实施可能在某些国家是技术上非法的(参见OWASP认证骗局)。

一旦服务器已验证登录和密码对您的用户数据库并发现匹配,系统需要一种方式来记住,浏览器已验证。

第三部分:使用秘密问题

第四部分:忘记密码功能

第七部分:分布式残酷力量攻击

我称之为Dummy Field(虽然我没有发明这个,所以不要相信我)。

<input type="text" name="email" style="display:none" />

例子:

在人类的情况下:用户不会看到字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母字母

我在客簿上使用了这个方法与CAPTCHA相结合,从那时起我没有看到任何垃圾邮件。我以前只使用了一种CAPTCHA解决方案,但最终,每小时约有五个垃圾邮件。

我相信这也可以用得很好的登录/验证表格。

你也可以稍微改變這一點,讓愚蠢的領域可見,但在屏幕邊界之外,但這完全取決於你。

我不知道是否最好作为答案或评论回答这个问题,我选择了第一种选择。

至于第四部分:第一个答案中的忘记密码功能,我会提到时间攻击。

在记住您的密码表格中,攻击者可能会检查完整的电子邮件列表并检测到已注册到系统(参见下面的链接)。

至于被遗忘的密码表格,我会补充说,这是一个很好的想法,在成功和失败的查询与某些延迟功能之间的平等时间。

https://crypto.stanford.edu/~dabo/papers/webtiming.pdf

我想添加一个非常重要的评论: -

“在企业,内网设置”大多数,如果不是所有上述可能不适用!

许多公司只部署“内部使用”网站,这些网站实际上是“企业应用程序”,这些 URL 只能在“公司内部网络”中解决(据称......)。

当用户密切连接到上述网络时,他们的身份(“身份验证”)是“已知”的,如他们的许可(“授权”)做某些事情......如“访问本网站”。

代币的价值对你毫无意义,但是,如果需要出现,“适当的手段存在”通过它,你的网站可以“(权威)问谁知道(LDAP......等)”关于任何(!)问题,你可能有。