Java 后端有没有好用的通信时验证账号的安全库? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
nnegier
V2EX    程序员

Java 后端有没有好用的通信时验证账号的安全库?

  nnegier 2024-04-01 01:23:32 +08:00 1907 次点击
这是一个创建于 637 天前的主题,其中的信息可能已经有所发展或是发生改变。

我没有用 JWT ,可能是没有太理解它,然后自己写了一个无状态安全验证,从客户端发起的那种,就是用户账号的一些信息(用户名、盐巴、过期时间等)拿出来加密然后 base64 后添加到 http header 发到服务端,然后服务端解密验证账号信息是否没问题,然后再处理此请求。

但是现在又有了一个新产品,确实也可以继续按照原有的思路那套来,但这次想换换,看看有没有工业级的现成的库可以满足我的要求?

5 条回复    2024-04-07 21:40:35 +08:00
dyv9
    1
dyv9  
   2024-04-01 06:32:10 +08:00 via Android
连加密和散列这些词汇在表达时都不做区分的话设计出来的方案大概率是有漏洞的,在客户端是不容易做到加密又同时能安全地保存私钥,在客户端要保存私钥可能还是用 U 盾加密狗这种可拿走放心的方案。
cgglyle
    2
cgglyle  
   2024-04-01 09:18:18 +08:00   1
Spring Boot Security and Spring Authorization service.

Spring Authorization Service 会提供 OAuth2 功能。OAuth2 提供多种通信是验证机制,本质上也是你说 JWT ,只不过不用你亲手去写了,配置好就行。

会在用户登录时签发 Token ,在之后前端使用 Token 过验证,Token 过期后用刷新令牌重新申请 Token ,基本上保证好 SSL 在登录时不出现问题。
Belmode
    3
Belmode  
   2024-04-01 10:24:44 +08:00
都是差不多的,可以试试这个整合包: Sa-Token
nnegier
    4
nnegier  
OP
   2024-04-05 08:13:50 +08:00 via Android
@dyv9
@cgglyle
@Belmode
但我仍存一个问题,JWT 的那个方式,token 由服务器生成,这个 token 被盗取重放攻击怎么办呢,短时间被塞入大量无效数据
Belmode
    5
Belmode  
   2024-04-07 21:40:35 +08:00
@nnegier #4 重放攻击行为本质上和 token 没有必然关系。防御手段其实有很多,一般常见的:
1 、使用随机数或者时间戳,加上请求参数 hash 后的值 一起发送给服务端,保证在允许的时间误差内,防止重放。
2 、 一次性的 token 。这个不是说是用户鉴权用的那个 token 串,而是针对某些特殊业务、特殊的接口,在使用前,需要单独获取一次 token ,然后拿这个 token 去请求(和 csrf 的防御类似),安全性高
3 、限流,对某些特殊业务、接口,限制用户的操作次数和操作频率()。
4 、more etc.

如果请求频率过高,那就是 CC 攻击了,这种直接根据请求特征 ban ip 就行了。

现实生产上,一般都是组合使用的,不会说哪种好,那种坏只用一种。另外,如何真的需要开发一些比较敏感的接口,一定要在请求中加时间戳+加密!这个可以参考微信服务的的 AES 请求参数认证,是个很好的例子。
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4004 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 26ms UTC 05:29 PVG 13:29 LAX 21:29 JFK 00:29
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86