这种前端加密有什么槽点吗?

2017-05-06 13:49:16 +08:00
 nikoo
用户登录页面,用 md5(用户输入的密码+用户名+日期戳年+月+日+小时) 得到 hash,传输该 hash 给后台验证

这里的日期戳是由后台页面生成(而不是 js 生成,所以不存在客户端系统时间与服务器时间不一致的问题)
另外为防止用户在一小时结束前打开登录页面,输入密码后登录正好过了一小时,服务器会验证前一小时与当前小时的两个 hash 与传递过来的 hash 进行验证

非 https 页面的情况下,这种加密传输是否能起到安全作用?是否有意义?
或者,有什么更完善的改进方案吗?
3858 次点击
所在节点    问与答
28 条回复
lslqtz
2017-05-06 20:27:31 +08:00
@geelaw 重放攻击是指攻击者发送一个目的主机已接收过的包,md5 中加了时间并没有明文密码,重放攻击将在时间过后直接无效。
lslqtz
2017-05-06 20:28:43 +08:00
例如说:我这有个 123456 的密码,md5(123456+2017+05+06+20+28),1 小时过期。
那么只有 1 小时内能进行重放攻击,所以我说基本就没可能了。
而密码已经经过 md5,不会进行明文传输。
cankoor
2017-05-06 20:32:38 +08:00
你可以看 https 的原理,可以实现一个。基于非对称加密。
Yinz
2017-05-07 13:04:46 +08:00
@fengyuhan 等一下,现在可以不到一分钟撞出指定的 md5 了吗?
wuhx
2017-05-07 17:39:57 +08:00
唯一的意义是可以避免用户密码暴露,无法防止重放攻击

@cankoor
HTTPS 的核心是浏览器内置了的 CA 证书验证链,否则非对称加密的公钥安全性无法保证。
fengyuhan
2017-05-08 02:19:17 +08:00
@Yinz 其實有更簡單的辦法,你直接複製 md5 去 google 搜索結果通常第一頁以內就有答案
Yinz
2017-05-08 02:24:14 +08:00
@fengyuhan 别转移话题啊。。。密码库彩虹表我才不感兴趣,一分钟撞出任意 md5 这个比较有意思
fengyuhan
2017-05-08 03:13:47 +08:00
@Yinz 是的,用 hashcat 輸入你期待的密碼位數,字母數字組合之類的,然後用 linkedin 的字典撞。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/359554

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX