要求
在公共网页上显示半安全数据(不在身份验证墙后面),但为该数据提供一些安全性。该系统的用户将收到一张邮件中的一张纸,上面有一个5-8位数的支票号码和一个10位数的字母数字验证码。
提案
首先,一份强制性声明,我知道如果没有某种形式的身份验证,数据将永远不会100%安全。
我建议让用户输入3条信息,一个数字5-8位数的支票号码,一个EIN号码,我认为是8-10位数字,然后是验证码,我们建议将其作为10位字母数字。
我们会在页面上放置一个服务器端控件,以防止在XX分钟的时间内从单个IP地址重复提交,或强制使用验证码,我还没有决定。
我有两个问题......
答案 0 :(得分:1)
一个10位字母数字代码为您提供52位熵(可能的字符是26个字母+10位,假设是单个情况),假设它是由CSPRNG生成的:
log2(36^10) = 52
作为一个粗略的指南,59 bits would take a determined attacker 457.50 hours(仅过了19天)。但是,使这16个字符,你将有80位NIST推荐强密码(破解109,327。95年)。注意这些时间是最大的,平均值只是除以2。
使用诸如邮件之类的出界机制发送密码是一种很好的安全措施。确保使用单向bcrypt哈希值将密码安全地存储在您的系统上。