Security Web应用程序中安全问题的最佳实践
我正在开发一个web应用程序,不管你信不信,用户注册时不需要提供他们的电子邮件地址。这些要求不能改变。用户将使用id和密码登录系统,就像任何标准网站一样。我面临的问题与忘记密码的用户有关。当他们想要生成一个新的时,我如何验证他们的身份 最初,我打算让用户选择一个安全问题(从5个列表中)并提供答案。如果他们曾经进入忘记密码页面,他们将不得不输入他们的登录id,以及他们的安全问题的答案。这似乎有点不安全,因为这类问题(母亲的婚前姓、出生地等)的答案通常不难获得 下面是我的一些问题:Security Web应用程序中安全问题的最佳实践,security,passwords,identity,Security,Passwords,Identity,我正在开发一个web应用程序,不管你信不信,用户注册时不需要提供他们的电子邮件地址。这些要求不能改变。用户将使用id和密码登录系统,就像任何标准网站一样。我面临的问题与忘记密码的用户有关。当他们想要生成一个新的时,我如何验证他们的身份 最初,我打算让用户选择一个安全问题(从5个列表中)并提供答案。如果他们曾经进入忘记密码页面,他们将不得不输入他们的登录id,以及他们的安全问题的答案。这似乎有点不安全,因为这类问题(母亲的婚前姓、出生地等)的答案通常不难获得 下面是我的一些问题: 安全问题是解决
- 安全问题是解决此问题的最佳方法吗
- 如果是,最好的问题是什么
- 用户需要输入多少个问题的答案
- 是否有必要在忘记密码页面上添加验证码
- 用户生成自己的问题是否更好
- 如果是,最好的问题是什么
- 用户生成自己的问题是否更好
嗯,必须有一些努力来防范暴力攻击,特别是来自机器人的暴力攻击。我会使用与SO相同的技术:我记不起位置,但如果你在谷歌搜索基于知识的身份验证,你会发现Q&a身份验证非常弱。一个重要的问题是潜在答案和实际答案的熵(可能的随机性)。如果你要一个最喜欢的颜色,实际上只有一个非常小的颜色列表,大多数用户会选择。这可能相当于一点熵。然后,如果你问第二个问题,比如你成长的城市,这可能会让你得到一点或两点熵(在墨西哥,三个城市中的每一个都有30%的机会得到这个答案) 我看到的一个估计是,要获得与8个字符的密码相同的强度,您需要大约26个问题 也就是说,您可以做其他事情来联系用户。您可以尝试向用户发送文本消息,而不是电子邮件-用户是否注册了电话号码?您可能会让用户在其计算机上存储一个证书,他们可以将其与密码重置请求一起上载(您必须努力确保此证书已绑定到计算机)。你可以做一个post注册,用户可以提交一个电子邮件地址 祝你好运 安全问题是解决此问题的最佳方法吗 绝对不是。 密码恢复需要对合法用户有效,而对坏人无效。秘密问题恰恰相反:黑客真的很擅长猜测,但合法用户却记不起自己的答案。这就是原因 您试图让用户在忘记密码的情况下更加容易,但不幸的是,秘密问题恰恰相反。用户讨厌他们,忘记了答案,这只会让用户更加沮丧
按照设计,当用户忘记密码时,您没有办法恢复帐户。不要用秘密问题让事情变得更糟。如果你真的想让密码恢复成为可能,那么为什么不强迫用户选择和回答秘密问题,而是要求他们提供电子邮件地址或电话号码,并按照所有好网站的方式重置密码?胡说八道。密码提示也是如此。如果黑客比原始用户更擅长解决问题,那么你会让黑客更容易,让合法用户更难:因此,你让问题变得比根本没有密码重置更糟糕。用户需要留下某种类型的联系人(电子邮件、手机号码等)来重置密码。同意,这是目前的最佳做法。然而,这个问题明确指出,提供电子邮件地址是不可能的,而这个限制在几年前写这个问题时是非常常见的。