关于前后端密码传输与存储?

2021-07-14 08:45:14 +08:00
 daguaochengtang
登录时,前端调用接口传的密码参数(加密,不加密),以及后端存储密码(加密,不加密)。你们是怎么做的?
排列组合有 4 种:
1. 前端加密,后端加密
2. 前端加密,后端不加密
3. 前端不加密,后端加密
4. 前端不加密,后端不加密
我们目前采用的是第 1 种,用户传输加密后的密码直接和库里加密后的密码比对。但是我偶然听闻了之前 csdn 发生过用户密码大量泄漏的事件。就想到其实前后端都加密的话,如果数据库密码泄露,不就能直接调接口了吗?
所以我想,是不是第 3 种要安全一点,前端传输名文,服务端拿到名文密码后,加密后与库里密码比对。这样即使数据库密码泄露,也无法得知密码名文,就无法调接口了。
当然,我知道,如果数据库都泄露了,光凭这一点已经无法谈及安全问题了。只是想就事论事,想知道你们是怎么做的,这个是否有业内约定俗成的标准?
6445 次点击
所在节点    问与答
51 条回复
Kaciras
2021-07-14 16:54:56 +08:00
当然选 2 了,前端加密骗用户,后端明文卖密码。
CrazyRundong
2021-07-14 17:58:09 +08:00
@zhaokun 破解 HTTPS? 愿闻其详
hgc81538
2021-07-14 20:30:31 +08:00
3. 前端不加密,后端加密

frontend:
POST https://domain/login --data "username=admin" --data "password=12345"

backend:
sql = select * from `user` where `username` = :username
result = db.get(sql, {:username => POST.username})

if (result) {
if ( password_verify(POST.password, result.password_bcrypt_hashed) ) {
// login success
} else {
// login fail
}
} else {
// user not found
}
Desiree
2021-07-14 20:49:08 +08:00
前端加密毫无意义,加密的算法必须由后端把控。客户端的所有信息都是不安全的。
akira
2021-07-14 20:55:10 +08:00
加密后的密码 加盐 再保存到数据库
dd99iii
2021-07-14 21:04:41 +08:00
加盐 加盐 加盐
otakustay
2021-07-14 21:28:12 +08:00
前端加密倒也不是完全脱裤子放屁,现在有 wasm 了反编译成本还是挺高的
yeqizhang
2021-07-14 22:15:13 +08:00
25 楼说的对。
主要是过智障安全测评不能传明文密码这一关
streamrx
2021-07-14 23:42:45 +08:00
前端加密没用的 再复杂的加密,也只是增加逆向的难度而已。只有时间够长 总能找到加密的入口函数
streamrx
2021-07-14 23:43:08 +08:00
前端加密没用的 再复杂的加密,也只是增加逆向的难度而已。只要时间够长 总能找到加密的入口函数
iseki
2021-07-15 04:19:59 +08:00
1,前端哈希不是防小人,是防手滑。后端必须上安全的哈希算法

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

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

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

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

© 2021 V2EX