java前后端分离保证接口的安全性

可实现接口调用防抓包,防篡改,防重发攻击,

1.服务端配置一对RSA密钥对,公钥pubkey_server,私钥prikey_server,并将pubkey_server写到web端js中

2.web端打开登录页,生成一对RSA密钥对,公钥pubkey_client,私钥prikey_client

3.登陆操作:

a.web端用pubkey_server加密如下信息,调用服务端登陆方法

{

loginname:'admin',
password:'123456',
pubkey_client:'这是pubkey_client'

}

b.服务端用prikey_server解密登陆参数,验证登陆信息,并把pubkey_client保存到服务端缓存

c.服务端生成AES对称加密的key,用pubkey_client加密如下返回结果,返回登陆信息

{

token:'这是认证token',
aeskey:'这是动态生成的aes加密key',
status:'登陆成功'

}

c.web端收到登陆结果信息,用prikey_client解密,拿到token和服务端动态生成的aeskey

4.接口调用:

a.用aeskey加密如下参数调用服务端api接口

{
token:'认证token',
param:'接口参数',
timestamp:'这是一个时间戳',
sign:'签名,对token,param,timestamp做md5运算得到的签名'

}

b.服务端收到web端参数,用对应的aeskey解密,

然后做签名运算,校验是否被篡改,

然后判断时间戳是否在1分钟之内,如果不是提示参数已经过期,

如果是,则写入redis,过期时间1分钟,防止重发调用(拿请求参数判断redis里是否存在,如果存在则是重发的调用)

你可能感兴趣的:(java前后端分离保证接口的安全性)