Restful API及接口安全
一、简介
REST(Representational State Transfer,具体状态转移),是一种基于HTTP协议、URI(统一资源定位符)、JSON和XML这些现有协议与标准的,针对网络应用的设计和开发方式。
资源 + HTTP动作
系统中所有对象都被抽象为资源,资源通过URI指向。
对于资源的具体类型由HTTP协议的各种动作实现。
二、接口验证
为保证API接口的安全性,需要设计一套严格的接口验证方法,常包含以下几种:
- 接口时效性验证,即接口uri是否过期。时间戳超时机制是防御DOS攻击的有效手段。
- 接口参数完整性验证,即定义接口签名,客户端把所有的请求参数根据一个特定的算法,生成一个签名字符串,并在请求时一并发送。服务器接收到后进行验证。如果不一样,说明参数被更改过。签名机制保证了数据不会被篡改。
- 用户唯一Token。
在以上三中机制的保护下:
如果有人劫持了请求,并对请求中的参数进行了修改,签名就无法通过;
如果有人使用已经劫持的URL进行DOS攻击,服务器则会因为缓存服务器中已经存在签名或时间戳超时而拒绝服务,所以DOS攻击也是不可能的;
如果签名算法和用户名密码都暴露了,洗洗睡吧。。。
分情破爱始乱弃,流落天涯思别离。
如花似玉负情意,影如白昼暗自迷。
随风浮沉千叶落,行色匆匆鬓已稀。