API接口请求安全

在设计API时,要保证RESTful API的安全性,主要考虑三个大方面:

数据窃取
用户的密码被不轨之人盗取,登录账号发布一些敏感信息,盗刷等
数据篡改
前端表单向后台提交请求时,在数据传输过程中数据被抓包后进行更改再提交
数据泄露
爬虫讲业务数据甚至核心数据抓取,直接或间接造成损失
这三点,在实际项目开发中,是需要特别注意的,也是很基础性的准则问题,那么该如何针对性的安全防范呢?其实解决的技术都非常的简单

1 数据窃取

我们拿登录来说,我们只要通过加密传输就可以了(大部分的请求都是http明文传输),加密的方式主要就是 RSA/DES
RSA属于非对称加密,由公钥加密,使用私钥进行解密, DES加解密公用一套公钥
在数据传输时,把登录的密码 进行RSA机密后传输(前端请求前进行公钥加密,私钥存放在后台配置里)这样即使使用工具拿到了加密后的字符串,没有私钥也解密不了。也就保证了被数据被窃取的可能。那如果服务器被攻破,黑客从配置里拿到了私钥,加密还有什么用吗?是没有什么用了,但是有一点,都攻破了服务器了,还拿私钥干嘛?直接窃取你数据库数据不就更方便吗!

2 数据篡改

针对数据篡改的问题,直接使用md5加密就可以了。
Md5 具有不可逆性,使用的是base64 格式,现在黑客维护了一张庞大的彩虹表,可以匹配到md5 所对应的字符,两个字符只要有一点细小的不同,md5加密后就会天差地别。现在md5加密后能被破解回来,那我们可以 加 “盐”
主要思路如下:
例如 商品支付功能 ,请求参数 为 shopName , count ,price
这个时候前端就可以将 shopName,count ,price 的值 进行md5机密后传输给后台,后台根据获取到的md5值 进行一次解密,对比 解析后 是不是和 shopName,count ,price 三个参数的值相同( 毛衣-1-100)
入参 : shopName = “毛衣”
count = 1
Price = 100
盐可以为 链接符号 “-”,那样加密后的md5值 = 828181924c1e2c07e6b7d40598d73dfe
后台拿到 828181924c1e2c07e6b7d40598d73dfe,解析完成后得到字符串 =”毛衣-1-100”
也可以不使用 盐 为固定的字符,动态盐 也可以

3 数据泄露

使用token 验证就可以了,没有登录获取不到token,不能请求,也不要使用主键自增的id做get请求,这样很容易被for 循环爬到所有的数据信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值