0x00
用户输入密码这里可能存在SQL注入!
那我们不允许用户输入特殊字符就好了~
最危险的地方就是最安全的地方!
现在的爆破字典大部分都包含特殊字符,如果我们不使用特殊字符,他们肯定想不到!
0x01
吐槽归吐槽,我们来仔细分析一下这个场景,假设开发这个功能的开发者脑子比较正常,那么最可能的原因有可能有下面两个。
数据库的字符集问题
用来存储用户密码的数据库表使用了简单的字符集,不支持特殊字符。
并且更可怕的是,它还是明文存储密码!因为但凡进行了二次处理(比如md5),即使使用了简单字符集也不影响存储。
密码存在最小长度限制
假如设置密码时,要求了密码最低长度限制,比如12位,那么即使没有特殊字符,密码也是无法被轻易爆破的。事实上这也是行业(NIST)正在推行的措施,鼓励用户使用更友好的、足够长的密码,而不是使用大量的特殊字符。
NIST SP 800-63B中对于密码的强度的最佳实践中有说到:可以使用更长的密码代替复杂的密码,这样会让我们的密码更容易被记住,而且足够长度的密码也并不是这么容易被破解。
0x02
但事实上,我们更应该做的安全措施是限制这种爆破行为,通过增加错误次数限制、增加风控来解决。对于安全性要求更高的场景,强制使用MFA(多因素身份验证),而不是通过要求用户记住一个复杂性极高的密码。
我还记得某产品对于密码的要求是这样的:
• 长度必须为 10 到 16 个字符。
• 必须同时包含数字和字母(要有大小写)。
• 必须包含一个特殊字符。
• 密码区分大小写。
• 必须与最近使用的三个密码不同。
• 不能包含用户名、当前网站名称。
说实话,要不是当时急需在上面办理业务,我是真的不想注册了。
不知道你们更愿意使用长密码还是包含特殊字符的复杂密码呢?
加个星标关注不迷路 ★ 更多原创文章第一时间推送!
三连来一个呗~
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...