博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
接口安全性思考
阅读量:5104 次
发布时间:2019-06-13

本文共 739 字,大约阅读时间需要 2 分钟。

现状:项目中一直遗留着一个问题,接口请求安全性问题。项目中的接口都是不设防的,一直都没校验请求的合法性。

需要达到的目的:过滤非本身app发出的请求,服务器能校验到客户端请求的合法性。
解决方案:1.直接上https(可以避免抓包);2.采用接口请求带上校验参数。
本文是通过【2.采用接口请求带上校验参数】进行处理接口安全问题。
要达到目的需要解决4个问题:
1.客户端和服务器通讯过程中需要带上一个共同都能识别的值(Token)
2.Token有2个注意点(a.该值是服务器返回的;b.该值是可变的并且服务器是能识别的)
3.客户端和服务器之间如何维护Token的不变部分和可变部分
4.如何让请求中的Token是不可解析的
解决思路(在接口传递过程中全程加密,并且客户端和服务器使用的加解密密钥有2套)
方法1:
1.客户端获取预授权码(预授权码是一次性的,并且有效期1分钟)
2.通过【预授权码+APPID】获取token和服务器当前时间戳(客户端需要维护服务器返回的时间戳;)
3.客户端每次请求都带上 【 token + 变化的时间戳 】
4.token有一个效期,时间戳有一个有效范围,只要token和时间戳有一个不正确都需要重新获取
加上时间戳的原因:维护一个变化的值,可以减少请求信息被抓取后模拟请求的情况;
使用服务器时间戳的原因:避免客户端时间不一致导致校验失败;
加密:因为如果不加密数据容易被模拟;
双向加密:增加破解难度;
加上Token原因:虽然有了变化的时间戳,但是因为只是用时间戳的情况下后台无法监控请求对应的信息,也无法控制请求的停止。

转载于:https://www.cnblogs.com/Jimmy-pan/p/5786359.html

你可能感兴趣的文章
js window.open 参数设置
查看>>
032. asp.netWeb用户控件之一初识用户控件并为其自定义属性
查看>>
linux--GCC用法
查看>>
Ubuntu下安装MySQL及简单操作
查看>>
OWIN是什么?
查看>>
前端监控
查看>>
clipboard.js使用方法
查看>>
0906第一次作业
查看>>
Ceph Monitor基础架构与模块详解
查看>>
dbca:Exception in thread "main" java.lang.UnsatisfiedLinkError: get
查看>>
hdu 1232 畅通工程(并查集)
查看>>
移动开发平台-应用之星app制作教程
查看>>
jquery validate使用笔记
查看>>
主要的几个脑网络——整理自eegfmri的博客
查看>>
leetcode 459. 重复的子字符串(Repeated Substring Pattern)
查看>>
CABasicAnimation animationWithKeyPath Types
查看>>
JavaScript--eval
查看>>
iOS6与iOS7屏幕适配技巧
查看>>
获取视图尺寸大小方法
查看>>
mysql 历史记录查询
查看>>