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