• 我那在公司干了三年的同时对加密的理解
  • 发布于 1个月前
  • 76 热度
    5 评论
最近做项目,他搞了用户登陆和状态保持。当时存的时候他跑过来问我密码要不要用 base64 加密存。我说这和明文没啥区别把,区别就是比明文多浪费1/3空间。不如直接加盐然后存 md5 。当我看到 token 的时候,我人直接傻了。

这就是 token YWRtaW58cGFzczEyMzQ1NnwxNzEzNzcxNzg4
我相信只要干过开发的人一眼就能认出来这是什么东西。 我本来以为这已经够逆天了。解码出来的内容才真的让人窒息:
admin|pass123456|1713771788
数据库的 user 表里面的用户名和密码也都是base64 编码存储的。

我本以为这种最基本的常识问题,只可能在一个实习生身上发生,但是这个同事至少在这里干了 3 年了。

在他的知识库里 base64 编码=加密
然后只有这种格式的才叫json。(用一对花括号包裹{})
{
    "test": 1
}
这种不叫json,更别说其他的值类型的被叫json
[
    "abc",
    "def"
]
可能我描述有问题,我的意思是,这个同事只认为花括号的才是 json ,其他的所有都不是。另外更劲爆的,我在的公司居然是一家专做安全的公司。
用户评论
  • 浅月流歌
  • 正常的登录逻辑:校验 token -> 检验缓存是否存在用户 -> token 续期 or 省略 -> 拦截器放行 -> 查询用户是否存在 -> RSA 解密前端密码 -> 得到初始密码 -> 哈希再次加密密码(可考虑加盐) -> 匹配数据库密码 -> 缓存用户 -> 返回 token 以及用户信息。
  • 2024/4/24 17:18:00 [ 0 ] [ 0 ] 回复
  • 沫离伤花
  • 其实用 HTTPS ,登录获取 token 明文传都算能接受的。但是这种又菜又喜欢私造协议的其实很烦,明明可以用键值对穿用户密码时间戳,非要用|分割拼在一起。

    而且看 OP 描述我怎么感觉这是把 '用户名|密码|时间戳' base64 编码了再作为 token ,每次请求都用这个呢。。。
    这压根没有服务端状态验证吧,那我把时间戳改成未来时间,这个登录态就一直不会掉了。。

    而且我还能用这个 token 机制暴力穷举出你库里的各种用户名密码。
  • 2024/4/24 17:04:00 [ 0 ] [ 0 ] 回复
  • 流年开花
  • 我这以前还有遇到过接口直接返回明文密码的时候,还得我这个前端反馈、写个 node server 临时解决这个问题。最后也是好几个月才解决掉。
  • 2024/4/24 17:01:00 [ 0 ] [ 0 ] 回复
  • 人走茶凉
  • 有些离谱,但不过多评价,因为我也是菜鸡。每个人菜的方向都不一样吧,另外你解密出来的数据出现了手机号,看起来不是很友好,希望下次注意,避免泄露他人隐私。
  • 2024/4/24 16:49:00 [ 0 ] [ 0 ] 回复