如何防止http请求数据被篡改

方式一:设置客户端IP黑/白名单

1.1客户端所有请求,请求到代理服务器(nginx),代理服务器维护黑/白名单的ip,决定是否转发请求;

1.2项目创建一个filter,拦截所有请求,在filter的方法中,通过request信息匹配ip黑/白名单,和url的拦截规则,决定是否合法;

有点:简单粗暴;

确定:需要客户端的IP固定;

应用场景:为系统的后台管理服务,客服需要人工审批和通过涉及到钱财的业务;

方式二、请求参数Sign签名

2.1前端请求发起http请求,对参数排序,然后使用参数与私钥拼接,在进行md5加密等方式,生成一个签名出来,一起发给服务端,服务端这边获取到参数,签名,再使用自己的私钥进行同样方式的加密生成签名,比对签名是否一致。一致则认为合法,不一致则不合法。担水无法防止重复请求攻击;

2.2针对上面方法升级,可以缓存每次请求的MD5值,或者每个请求添加uuid+随机数这样一个代表请求序号的标识。然后请求到服务端时,服务端想办法缓存起来起来这个标识,每次请求过来时,判断是否已经请求过。

2.3在请求的参数中和签名结果里,假如时间戳这个参数,业务服务器一方面比较签名结果,一方面根据时间戳,来认证请求的合法性,比如允许请求的时间戳与服务器当前时间,存在20秒的误差等自定义规则。超过20秒的合法请求,服务器也不处理,防止恶意的重复请求。

方式三、请求方式换成Https。

http请求过程:

建立TCP连接——>客户端向服务器发送请求命令——>服务器应答——>关闭TCP连接——>客户端接受到服务器响应的数据

 

 

ssl(secure sockets Layer 安全套接字协议)

posted on 2020-04-22 21:35  星空6  阅读(4915)  评论(0编辑  收藏  举报

导航