请问用对称加密,在数据库保存用户密码有什么优缺点呢?

2020-05-06 11:50:54 +08:00
 yanqing07

我现在所知道的情况
优点:

  1. 可以知道用户密码(狗头)

缺点:

  1. 密钥保存的风险。服务器被黑,用户密码就都知道了

还有其他优缺点吗?大家可以补充下么

1976 次点击
所在节点    问与答
15 条回复
AngryMagikarp
2020-05-06 11:54:24 +08:00
第一个根本不算优点,你需要知道用户密码干嘛,除非你本来就想通过这种手段钓鱼,然后去黑用户的其他帐号,比如邮箱什么的。

在这个系统里,你要做的任何操作都可以绕过密码验证,因为系统就是你们自己开发的。
zqqian
2020-05-06 11:55:36 +08:00
要知道用户的密码?
你是搞黑产的吗?用来撞库?
lizytalk
2020-05-06 11:56:31 +08:00
可以知道用户密码是缺点好么....
ysc3839
2020-05-06 11:56:59 +08:00
如果“可以知道用户密码”属于优点的话,那不加密直接存储密码会更优,因为少了加密过程,理论上不加密的性能更高,占用空间更少 (不需要保存密钥)。
zooo
2020-05-06 11:58:02 +08:00
国内公司保存密码保存明文了吗?
churchmice
2020-05-06 12:08:37 +08:00
他娘的为何要保存密码?你加盐 hash 一下不就好了吗
JJstyle
2020-05-06 12:20:56 +08:00
加狗头你以为 v 友就不喷你了吗 🐶)
dallaslu
2020-05-06 12:33:29 +08:00
想知道用户密码并不一定要明文存啊,客户端传输过来时记录到任何地方都行。
yanqing07
2020-05-06 14:05:40 +08:00
@AngryMagikarp 我也觉得有点道理。系统是你的,用户使用了,那是不是有权处置用户的密码。貌似现在法律又没有这种限制。。。
yanqing07
2020-05-06 14:08:56 +08:00
@dallaslu 的确是。数据到了服务端,再去将这些明文存下来,貌似也不会存在什么问题。
ipwx
2020-05-06 14:09:56 +08:00
这是因为客户想要把这些用户导入到另一个商业系统。但是,原系统的密码都是 hash 后的密码。所以,现在希望用对称加密,这样就能还原密码了

----

下次用户登录的时候,通过验证了,就把内存中的密码用一下,但你们也不存储。这是最符合道德的做法。
msg7086
2020-05-07 04:16:52 +08:00
用对称加密保存用户密码,就等于不加密保存用户密码。

不加密保存用户密码的优缺点你应该都知道了。

用户导入另一个系统可以双系统同时认证,即登录的时候如果另一个系统里没有设置密码,则用原系统 hash 验证,然后直接将通过验证的原始密码设置进新系统。整个过程明文密码在内存里也就存在几毫秒的时间,基本是安全的。

如果客户的目的是得到明文密码,那么直接存明文密码就行了。毕竟明文密码终究是可得的,加密能有什么用呢。
yanqing07
2020-05-07 11:39:28 +08:00
@ipwx
@msg7086
看来在内存里使用下密码,这样简单直接点。换加密方式还麻烦。反正风险告诉客户了,剩下就由他们自己考量了
lordofhollows
2020-05-07 12:07:46 +08:00
让客户提供一个密码,使用该密码生成非对称加密的私钥、公钥,用户密码使用公钥加密后存到数据库。
验证用户登录的时候,使用公钥加密用户密码后再与数据库中存的进行比对。
客户要导出数据时,提示输入密码,然后使用该密码和私钥将用户密码解密。
这样如果被拖库,也无法拿到用户密码明文。
缺点的话,如果客户把密码忘了,或者私钥丢了,用户密码就无法还原了。
yanqing07
2020-05-11 11:23:52 +08:00
@lordofhollows 这思路不错。谢谢你的建议

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

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

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

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

© 2021 V2EX