一种http环境下安全登录的设计

2020-12-05  本文已影响0人  田文健

登录一般需要三个信息:用户名,密码,验证码

攻击思路:
1.抓包获取用户名和密码
2.破解数据库获取用户名密码

对于1
如果只是将密码用md5转一下,那么抓包者还是可以攻击。
将密码的MD5和验证码一起md5运算,抓包者不能重放攻击,但是数据库不安全了。

对于2
需要存储密码的信息摘要。这个必须是前端传输进来的值的运算结果

1和2如何兼得?

因为算法是暴露的,任何计算方式都是别人容易知道的。

一种分割密码的思路

比如密码长度最小8位 设为password ,验证码是code 从中间分成两部分,前一部分在数据库中存1次md5:md5(pass),
后部分存2次md5: md5(md5(word))

登录时,前部分针对抓包攻击,后部分针对数据库泄露攻击。

前一部分传输md5(md5(pass)+ code),后一部分传输md5(word).

服务器同时比较前一部分和后一部分,如果匹配则登录成功。

这样既防止重放攻击,又能防止数据库泄露攻击。
当然这里只是一种思路,在https的环境下避免了重放攻击,无需这么麻烦。

上一篇 下一篇

猜你喜欢

热点阅读