1/3空间。不如直接加盐然后存 md5 。当我看到 token 的时候,我人直接傻了。
YWRtaW58cGFzczEyMzQ1NnwxNzEzNzcxNzg4我相信只要干过开发的人一眼就能认出来这是什么东西。 我本来以为这已经够逆天了。解码出来的内容才真的让人窒息。
admin|pass123456|1713771788数据库的 user 表里面的用户名和密码也都是base64 编码存储的。
我本以为这种最基本的常识问题,只可能在一个实习生身上发生,但是这个同事至少在这里干了 3 年了
base64 编码=加密json。(用一对花括号包裹{}){
    "test": 1
}
这种不叫json,更别说其他的值类型的被叫json
[
    "abc",
    "def"
]
|  |      1oott123      2024-04-22 16:10:13 +08:00  4 你听说过 basic auth 吗( 严格来说把密码当成 token 也不是不行 | 
|  |      2soundlife      2024-04-22 16:13:12 +08:00  6 有些离谱,但不过多评价,因为我也是菜鸡。每个人菜的方向都不一样吧 | 
|  |      5qGjL83Ro3i1gE1M3      2024-04-22 16:15:40 +08:00  9 你解密出来的数据出现了手机号,看起来不是很友好,希望下次注意,避免泄露他人隐私。 | 
|      6matepi      2024-04-22 16:15:45 +08:00 编解码、加解密、摘要、加盐 CRUD boy 确实很多不认识的 再进一步地上面的都认识了,是不是就安全了呢……又要讲什么 防重放、中间人 那不得又是一堆人不认识的 咋办,得教得学啊 | 
|  |      9yuzo555      2024-04-22 16:18:12 +08:00 前后端交互过程中,强制 HTTPS 的情况下,这样做可以的。 数据库这样存不行,不能存明文。 | 
|  |      10gav1nwwk      2024-04-22 16:18:22 +08:00 高级 | 
|  |      12qGjL83Ro3i1gE1M3      2024-04-22 16:18:27 +08:00 | 
|  |      15tool2dx      2024-04-22 16:20:51 +08:00 他可能觉得自己的 cookie 保存的密码,只有自己能看,看不了别人的 cookie (密码)。 | 
|  |      16povsister      2024-04-22 16:21:24 +08:00 世界就是依赖草台班子运行滴 stay calm | 
|  |      17gesse      2024-04-22 16:23:24 +08:00 你直接告诉他用 jwt 就行了,发帖没必要。 | 
|  |      18BeUself OP @gesse 人家写 java 的,我做 python 的,关于 token 别人也没问我,也轮不到我去指点。关于存数据库的 我说了数据库不要存 base64 之后的内容,人家不还是照存不误。所以只能发帖吐槽。 | 
|      19blackmirror      2024-04-22 16:28:27 +08:00 下次你们系统上线的时候通知下 | 
|  |      21duan602728596      2024-04-22 16:31:32 +08:00 我这以前还有接口直接返回明文密码的时候,还得我这个前端反馈、写个 node server 临时解决这个问题。最后也是好几个月才解决掉。 | 
|      22abcde123456789      2024-04-22 16:32:01 +08:00 面向领导/用户编程 用户要加密某个东西,base64 糊弄一下就过去了 | 
|      23yeyang5211      2024-04-22 16:33:31 +08:00 其实有时候只是为了偷懒😆  ,也不排除菜 . | 
|  |      24ShundL      2024-04-22 16:33:37 +08:00 小项目 能用就行,管它三七二十一 | 
|  |      26BeUself OP | 
|  |      27BeUself OP  11 @yeyang5211 经过这么久打交道,我发现这个人不仅喜欢偷懒而且还菜。口头禅就是:Java 和 python 不一样,java 里面搞不了这、搞不了那。恰巧搞这项目的就他一个 java ,没人能反驳他。我也不会 java 。但是我可以知道,java 这么大体量的东西,不可能这搞不了那搞不了 | 
|  |      28body007      2024-04-22 16:38:06 +08:00 @xhatt510 #3 curl -v -u "username:password" http://xxx ,就这个,直接在 http header 里面把用户名密码用 base64 编码传给服务器,webdav 就这样干的,不过用 https 的话还是有点安全性吧。 | 
|  |      29lambdaq      2024-04-22 16:38:06 +08:00 然后只有这种格式的才叫 json 。(用一对花括号包裹{}) 我觉得 LZ 你可能也没了解全貌。。。纸面上的 json 格式,只要能被 js eval(),都算合法的。 看官网吧 https://www.json.org/ ,你说的是第一种情况,object ,第二种情况就是 An array is an ordered collection of values 。。。 当然把密码搞进去比较离谱,但是 json 格式其实非常宽松。。。。 | 
|      30e3c78a97e0f8      2024-04-22 16:38:50 +08:00  1 HTTPS 传输的 token 可以真么干 存数据库的密码不能这么干 而且楼主,密码不能只做一次 md5 就存储,md5 不安全而且没有盐会有彩虹表攻击,正确的做法是用 argon2 或者 scrypt 加盐哈希再存储 | 
|  |      31supuwoerc      2024-04-22 16:39:06 +08:00  1 别尬黑实习生啊,我带的实习生开周会都分享了 Bcrypt 和常见的几种加密实现的异同和优缺点了... | 
|  |      32yhxx      2024-04-22 16:46:45 +08:00 跑个题,时间戳都 171 了啊 果然岁月如梭 | 
|  |      33lsk569937453      2024-04-22 16:48:25 +08:00  1 不好意思把标题读成了: 逆天!干! 3 年的同事用 XXXX | 
|  |      34mogita      2024-04-22 16:49:44 +08:00 领导嫩了点只能说 | 
|  |      35MossFox      2024-04-22 16:51:41 +08:00  15 试一下下回在用户名或者密码里面包含一个 "|" 会发生上面 | 
|  |      36MossFox      2024-04-22 16:51:47 +08:00 *什么 | 
|  |      37gamexg      2024-04-22 16:54:00 +08:00 | 
|      38JoeDH      2024-04-22 16:56:28 +08:00 这种就是连最基本的八股文都不背的那种人 | 
|      39cndenis      2024-04-22 16:56:44 +08:00  3 @xhatt510 数据库存明文密码这么劲爆的事, 如果他不改你可以报告领导, 如果领导认为不用改你就可以走人了, 早晚得爆雷. | 
|  |      40FengMubai      2024-04-22 16:56:48 +08:00 via Android 我司也差不多,会话密钥从服务端获取的。密钥得加密啊,密钥的密钥和密钥一起传了(尽管还做了一些变换 | 
|      42realJamespond      2024-04-22 16:58:49 +08:00 https 没啥问题吧 | 
|  |      43fkname      2024-04-22 16:59:54 +08:00 可能接触的少,大部分认证这种逻辑都是统一封装处理了;不改也能理解,给领导说我们系统有漏洞要修,因为我导致的,很少有人会这么干 | 
|  |      44woodfizky      2024-04-22 17:02:21 +08:00 其实用 HTTPS ,登录获取 token 明文传都算能接受的。 但是这种又菜又喜欢私造协议的其实很烦,明明可以用键值对穿用户密码时间戳,非要用|分割拼在一起。 而且看 OP 描述我怎么感觉这是把 '用户名|密码|时间戳' base64 编码了再作为 token ,每次请求都用这个呢。。。 这压根没有服务端状态验证吧,那我把时间戳改成未来时间,这个登录态就一直不会掉了。。 而且我还能用这个 token 机制暴力穷举出你库里的各种用户名密码。 | 
|  |      46forvvvv123      2024-04-22 17:04:34 +08:00 @lsk569937453 哈哈哈哈哈哈哈哈 | 
|      47456vv      2024-04-22 17:06:30 +08:00 正常,难道你登录时不是使用用户密码?又难道你的 token 又有 IP 限制或一次性的?偷用你的用户密码和 token 区别在那里? | 
|      48xxkmogu      2024-04-22 17:07:34 +08:00 咱刚入行的时候面对一个必须要传递密码原文到后端的场景,就已经对密码进行非对称加密了,即便是在 https 的情况下。(骄傲 | 
|  |      49yulgang      2024-04-22 17:13:17 +08:00 | 
|      50xwwsxp      2024-04-22 17:15:22 +08:00 这算个啥,和我对接的那个 Andriod ,那才是崩溃,调用阿里的两个接口,我都封装好了,文档都写好了,JSON 交互,还给我传其他格式,接口测试环境,我都是通过 swagger 搭建的;阿里那边返回的数据,让其通过 io 类写到本地,防止 token 中有些特殊字符被控制台解析,这也不会,TMD 的,干什么 Android  ========== 更离谱的事,我在给他调试接口,他在和别人聊游戏,就这还 3 年,我 3 年不是这么菜的;菜,还脾气大,和我吵,直接让你滚蛋!!! | 
|  |      52BeUself OP @woodfizky 就是你猜的那样,'用户名|密码|时间戳' 然后 base64 编码了再作为 token ,每次请求都用这个。并且数据库用户表有个字段叫 token 把这个数据存了一份。 | 
|  |      54msg7086      2024-04-22 17:20:27 +08:00 您对同事有什么误解吗。 | 
|  |      56woodfizky      2024-04-22 17:23:37 +08:00 @xhatt510 #52  好好好。。这么玩是吧。 这私造协议 1 暴露密码,2 不防篡改,3 服务端会话维持放关系数据库。。连 JWT 都不用,那没什么好说的了。 哎,无奈我也碰见过这样的同事,已经有画面感了,想到就烦。 | 
|  |      57jsq2627      2024-04-22 17:24:28 +08:00 遇见这样的同事和项目想必已经是屎上雕花。谁写谁背锅,身为外人当作看不见就对了。 | 
|      58moqsien      2024-04-22 17:24:58 +08:00 挺好的,就欣赏这样的同事。 | 
|      59qinfengge      2024-04-22 17:26:02 +08:00 手写登录注册没必要,还不如用第三方,毕竟不一定有别人考虑的全面。 | 
|  |      61Jasckcc      2024-04-22 17:32:48 +08:00  2 正常的登录逻辑:校验 token -> 检验缓存是否存在用户 -> token 续期 or 省略 -> 拦截器放行 -> 查询用户是否存在 -> RSA 解密前端密码 -> 得到初始密码 -> 哈希再次加密密码(可考虑加盐) -> 匹配数据库密码 -> 缓存用户 -> 返回 token 以及用户信息。 | 
|      62pyKane      2024-04-22 17:33:24 +08:00 如果所有的通信过程都是在 HTTPS 的情况下完成,也不是不可以。HTTPS 本身就把所有的全加密了。这就是为什么现在很多支付网关,只需要一个 KEY 放在 HEADER 上就可以了。比如 Stripe . 只是如果那个密码是用来登录用的还明文存在了数据库,确实是不好。 | 
|      64FrankAdler      2024-04-22 17:34:25 +08:00  2 @oott123 传输层面和存储层面不能划等号的。 | 
|      65superedlimited      2024-04-22 17:34:57 +08:00 via iPhone 这个时间戳一看就是很大可能拍黄片的开发搞出来的 | 
|  |      66yKXSkKoR8I1RcxaS      2024-04-22 17:35:36 +08:00 密码 MD5 加盐存。 但是 Token 的话一般 RSA 或者 AES 加密。 | 
|      70ovtfkw      2024-04-22 17:48:28 +08:00 via iPhone 前端加密不是伪命题吗,数据库存的加密就行了 | 
|  |      71Grand      2024-04-22 17:50:13 +08:00 不怕你同事也逛 v 站嘛 | 
|      72way2create      2024-04-22 17:51:38 +08:00 @superedlimited 上边说了半天 java 你是一点不看啊 | 
|  |      73KingZZZZ      2024-04-22 17:52:16 +08:00 最危险的地方就是最安全的地方 | 
|  |      75jqtmviyu      2024-04-22 17:55:31 +08:00 wc, json 只见过传键值对的, 原来还有有序列表.  是我见识太少了么, 还是说用的人不多. | 
|  |      77Hopetree      2024-04-22 17:58:29 +08:00 相当于没有一点常识的人,但是这种人我见过不少,真的,很多系统做单点登录的时候,为了方便,就直接给对接系统传一个用户名过去,表示登录成功,也就是说你只需要手动传一下这个用户名,你也可以登录成功,等于不需要认证 | 
|      78ZnductR0MjHvjRQ3      2024-04-22 18:06:52 +08:00 很离谱 经验太少且不愿意思考 | 
|  |      80lstz      2024-04-22 18:07:36 +08:00 via Android 也许是各大网站的 base64 列于加密解密项让人误导了 | 
|  |      81BeUself OP @jqtmviyu 单个值也是合法的 json 串。只要符合 json 的规范就可以了。是用的少,常用的是键值对里面嵌套 list | 
|  |      84qeqv      2024-04-22 18:13:40 +08:00 之前在站内碰见一个 md5 加密联系方式的,我指出错误他还给我发白眼表情。 碰到这样的你还能咋办,凉拌咯 | 
|  |      85JohnChang      2024-04-22 18:13:54 +08:00 话说 Base64 是用来干嘛的?这玩意除了装逼好像没看到啥实际的用途。 | 
|      87renyi1986      2024-04-22 18:21:55 +08:00 我给你讲过笑话当年 csdn 也是明文存储,还被脱了裤 | 
|  |      88jqtmviyu      2024-04-22 18:26:36 +08:00 @qeqv #83 我收过的大部分是这种类型. 还有我最讨厌有的返回空, 有的返回 null, 两种混合的.  { "data": {}, "status": 0, "statusInfo": { "message": "给用户的提示信息", "detail": "用于排查错误的详细错误信息" } } | 
|  |      89azhangbing      2024-04-22 18:36:54 +08:00 牛逼,我是客户端,别说 token  我们重要接口是 AES 加密内容  RSA 加密 AES 的秘钥  + HTTPS 双向证书验证 证书秘钥采用自定义偏移位的算法 到 SO 中 采用 LLVM 混淆 | 
|  |      90xyooyx      2024-04-22 18:41:53 +08:00 | 
|  |      91ChainLock      2024-04-22 18:59:13 +08:00 用 jwt 可以吗 | 
|      92superedlimited      2024-04-22 19:00:12 +08:00 via iPhone @way2create 哼😾讨厌了啦😠 | 
|      93zpxshl      2024-04-22 19:04:06 +08:00 | 
|      94Ackvincent      2024-04-22 19:07:09 +08:00  1 他的能力和工资相匹配吗?匹配的话没什么问题 | 
|  |      95exploreexe      2024-04-22 19:08:41 +08:00 让我想起了 CSDN 明文存密码。 | 
|      96businessch      2024-04-22 19:21:42 +08:00 via iPhone 其实吧,可能他的上一个领导就是明文,他改进了下,这样可以逆向修改。 | 
|      97LiLaoMo      2024-04-22 19:24:24 +08:00 YWRtaW58cGFzczEyMzQ1NnwxNzEzNzcxNzg4 为啥一看这个就知道是 base64 加密的? | 
|      98qingyingwan      2024-04-22 19:30:07 +08:00 @JohnChang base64 就是一个编码二进制数据的方法,比如图片,文件,游戏存档之类的 | 
|  |      99adian      2024-04-22 19:30:24 +08:00 太不专业了 | 
|      10007aPzknB16ui9Cp3      2024-04-22 19:31:39 +08:00  4 在什么场景下用户密码都不应该明文存放,这种人就是技术素养极低,技术素养低的人一般逻辑思维也很差(原因),直接开除就可以了 |