登录接口防重放攻击怎样设计?

查看 157|回复 12
作者:cl76915557   
请教各位大神一个登录接口安全问题。
我们大作业 web 系统 账号密码登录的现有设计:客户端先拉取服务端 RSA 公钥,使用公钥加密用户名密码提交登录接口。
我发现这个只能防止密码明文被抓包窃听,无法防御重放攻击,攻击者捕获加密报文就可以反复重放登录。
所以 ai 调研了几个方案 1. 新增 challenge 接口,登录前获取一次性 challenge ,challenge 和账号密码一起加密,消费即作废;
2. 客户端携带 nonce+timestamp 随请求一起加密,服务端校验时间窗口+redis 校验 nonce 防重复。
想问下线上用户名密码登录场景,哪一种落地更多? challenge 模式两次接口会不会有什么短板?感谢大家。

重放攻击, 登录接口, 防重放

dzdh   
rsa 公钥你弄个 md5 指纹。只能用一次。一次一生成 rsa 公钥  :doge:
Liu6   
额, 这 sign 不就很符合你的场景吗? sign 可以严格一次, 也可以时间窗口,也不需要使用缓存等资源。
Liu6   
@Liu6 #2 现在是 AI 时代, 直接问 AI 吧。 除了 AI 我现在都快啥都不会了
godall   
防重放攻击的标准做法就是 nonce+timestamp 啊,没什么好争议的。
liKeYunKeji   
header 做一次性的校验码( token\sign\自定加密参数)
dimwoodxi27   
用 wasm+图片隐写,sign 设置唯一条件,甩给前端动态 vmjs 来取图的 sign 值;随机数加时间戳有啥意义,又不支持无状态验证还浪费资源
cowcomic   
nonce+timestamp 这个就行啊,标准做法
opengps   
带上时间,有效期 1 分钟啊
esee   
关键接口 消费一次即 作废,但是这样有时候网络不好系统自动重试 也会有问题,你要做好兼容 ;一般接口加签名和时间戳就行了啊。你对接一下大厂的接口,基本也是这样设计的
您需要登录后才可以回帖 登录 | 立即注册

返回顶部