话说回来,如何做才能在明文存储密码的情况下保证安全?

2018-03-07 08:45:59 +08:00
 whileFalse
不考虑“这样做有什么意义”,只是矫情地想知道答案。比如:


1.认证使用单独的服务和 DB,其他任何业务不连接该 DB
2.认证服务做好防注入
3.为防止密码被管理员看到用于尝试登录其他网站,密码不允许自己设定。在注册和更换密码时都自动生成随机密码
5773 次点击
所在节点    程序员
35 条回复
kanex
2018-03-07 08:57:30 +08:00
你的第三条已经和用哈希去 mask 没有本质差别了吧
snail1988
2018-03-07 08:59:08 +08:00
随机密码不就和 hash 一样了,那明文密文还有什么区别?
wysnylc
2018-03-07 08:59:29 +08:00
明文==不安全
XiaoFaye
2018-03-07 09:00:01 +08:00
以前做过 SQL Server 数据库加密,应该是比较好的方法了。
Keyes
2018-03-07 09:13:36 +08:00
之前我们也有类似的需求,某个核心功能必须要有明文密码,当前的解决方案是直接在 C 代码里硬编码了一个 AES 钥匙,对称加密存起来你懂的

其实有更好的做法,我们是有 web 的,可以在登录 web 时把密码写一份到 cookie 里,再把 cookie 处理一下就可以了
Keyes
2018-03-07 09:14:18 +08:00
接上,后边业务服务器还是存 hash,这样可以确保自身清白
580a388da131
2018-03-07 09:20:17 +08:00
服务器只要联网就一定能被攻破
Keyes
2018-03-07 09:22:26 +08:00
@580a388da131 也不能单说一定会被攻破,要看攻破的代价
Len1133
2018-03-07 09:23:16 +08:00
把明文藏起来
fzleee
2018-03-07 09:24:57 +08:00
参看之前 Adode 密码泄漏事件。所有密码用 AES 加密,加密密钥放到其他地方。
ssoor
2018-03-07 09:25:09 +08:00
有没有考虑过存双份, 明文和 hash 都存一份, 明文表线上只允许写权限.其他机制都是使用 hash.如果非要保留明文密码的话我觉得这样应该可以做到比较好的权限.但是限制也比较明显,就是存储系统必须支持,以及对存储系统的权限管理要做好避免存储系统方面出问题.
whileFalse
2018-03-07 09:36:09 +08:00
@snail1988 @kanex 有区别啊。看下密码表就可以登录。这么做的目的是防社工。防管理员拿着你的密码去别处碰。
snail1988
2018-03-07 09:38:13 +08:00
@whileFalse 你非明文密码我拿到也可以登录啊,密码不明文储存本质目的就是避免撞库,拿着明文密码登录其他网站,你自己网站都被攻破了,你的密码已经没什么意义了
iyaozhen
2018-03-07 09:40:39 +08:00
可以根据用户名生成 aeskey 加密。做模拟登录确实需要存储用户密码
whileFalse
2018-03-07 09:42:43 +08:00
@snail1988 在不修改程序的情况下,拿到不能反解的非明文密码,怎么登录呢?

我们在讨论的不就是怎么不被攻破么。管理员查表看密码不视为网站被攻破。
gamexg
2018-03-07 09:45:56 +08:00
离线生成公钥钥对,私钥离线保存。
明文密码公钥加密后保存。
xpresslink
2018-03-07 09:53:08 +08:00
数据库加密之类的也是间接加密。

明文要保证安全唯一办法就是,----物理隔离----,
也就是说放了密码的主机不能连网,同时禁用任何外接存储,禁止任何非授权的人进入机房。
要查询要在主机本地终端操作。不然谈安全都是扯淡。
Building
2018-03-07 10:01:06 +08:00
用可逆的加密算法即可,前提是你的算法不会泄漏。
otakustay
2018-03-07 10:35:48 +08:00
让密码仅短时间、一次性生效,对,说的就是短信验证码
whileFalse
2018-03-07 10:42:14 +08:00
@otakustay #19 短信验证码是基于手机的登录,不是基于密码体系的登录。

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

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

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

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

© 2021 V2EX