细说REST API安全之概述
目前许多前后端应用都采取REST架构风格,前端应用和后端服务通过API进行数据交换。
通过REST API在网络中进行数据交换时很容易被网络抓包,然后进行恶意批量调用,最终导致后端服务不堪负重而影响正常业务,甚至通过数据篡改制造大量垃圾数据。
鉴于此,REST API的安全就变得非常重要!不考虑任何REST API安全防护的系统可能会受到如下攻击:
▇ 重放攻击,DoS/DDoS攻击,导致系统被大量恶意请求拖垮,影响正常业务
▇ 数据篡改,产生大量的垃圾数据
▇ 敏感数据被泄露
▇ APP被仿制
所以,在设计REST API时需要解决授权访问,敏感数据泄露,数据篡改,重放攻击,DoS/DDoS攻击等一系列安全问题。
1. 认证授权
认证授权包含2个方面:
(1)访问某个资源时必须携带用户身份信息,如:用户登录时返回用户access_token,访问资源时携带该参数。
(2)验证用户是否具备访问某些资源的权限:访问资源时判断用户权限。
2. 防止敏感数据泄露
通常,敏感数据指用户名和密码信息,所谓敏感数据泄露包含2个方面:
(1)密码信息不能以明文方式存储在数据库中,容易被恶意窃取。
(2)用户名和密码参数不能以明文方式在网络上进行传递(对参数进行编码或者使用ssl加密传输)。
3. 防止数据篡改
通常可以使用MD5加密的方式对API参数进行签名,在服务器端通过校验签名结果来验证数据是否被修改。
4. 防止重放攻击,DoS/DDoS攻击
可以通过时间戳,请求序列号等方式在一定程度上防止大规模的重放攻击。
实现方式不同,效率和难易程度上略有差异,需要根据业务系统实际需求选择合适的方式。
5. 其他注意事项
- API只曝露指定方法,如:POST,GET,PUT,DELETE。
- 参数校验,如:根据HTTP消息头中的Accept字段检查是否存在必要的参数信息,甚至可以验证参数格式是否正确等。
- 尽量使用SSL
- 客户端JavaScript代码混淆(注:JavaScript代码混淆不能起到加密的作用,而是需要尽量将用户名和密码加密结果随机化,如:加入加密随机盐值等)
总结:
安全是相对的,是否需要严格的API安全性设计需要根据应用本身的需求而定。
安全保护也是多层次的,往往在API本身的安全防护的外围,还需要一些其他的安全保障。
【参考】
http://www.jianshu.com/p/d7c52d113a68 浅谈API安全设计
http://www.jianshu.com/p/c6518a8f4040 API接口安全性设计
http://blog.nsfocus.net/rest-api-design-safety/ REST API 安全设计指南
细说REST API安全之概述的更多相关文章
- 细说REST API安全之防止重放攻击
一. 重放攻击概述 百科对重放攻击的描述:https://zh.wikipedia.org/wiki/%E9%87%8D%E6%94%BE%E6%94%BB%E5%87%BB简而言之,重放攻击的产生是 ...
- 细说REST API
1. REST概述 REST(英文:Representational State Transfer,又称具象状态传输)是Roy Thomas Fielding博士于2000年在他的博士论文中提出来的一 ...
- Netty源码分析之ByteBuf(一)—ByteBuf中API及类型概述
ByteBuf是Netty中主要的数据容器与操作工具,也是Netty内存管理优化的具体实现,本章我们先从整体上对ByteBuf进行一个概述: AbstractByteBuf是整个ByteBuf的框架类 ...
- 细说 Web API参数绑定和模型绑定
今天跟大家分享下在Asp.NET Web API中Controller是如何解析从客户端传递过来的数据,然后赋值给Controller的参数的,也就是参数绑定和模型绑定. Web API参数绑定就是简 ...
- ArcGIS API for JavaScript 4.2学习笔记[5] 官方API大章节概述与内容转译
内容如上,截图自ESRI官网,连接:ArcGIS API for JavaScript 4.2 [Get Started] 类似于绪论一样的东西,抽取了最需要关注的几个例子.如:加载Map和View, ...
- 细说REST API安全之防止数据篡改
通常可以使用MD5或SHA-1对API参数进行签名,在服务器端通过校验签名结果来验证数据是否被修改. 举个例子:添加用户 地址:http://192.168.0.10/v1/user/add?sign ...
- 细说REST API安全之认证授权
认证授权包含2个方面:(1)访问某个资源时必须携带用户身份信息,如:用户登录时返回用户access_token,访问资源时携带该参数.(2)检查用户是否具备访问当前资源(url或数据)的权限:访问资源 ...
- 细说RESTFul API之版本管理
目录 接口实现版本管理的意义 如何实现接口的版本管理 项目实战 接口实现版本管理的意义 API版本管理的重要性不言而喻,对于API的设计者和使用者而言,版本管理都有着非常重要的意义. 首先,对于API ...
- 细说RESTful API之文档管理
目录 API文档格式 文档管理方式 基于注解实现,代码和文档在一起 Swagger Api2Doc 基于API测试工具生成 Postman rest-client 独立编写文档 RAP DOCleve ...
随机推荐
- HNOI2019
省选总结 day0 写了下平时不经常写的模板,像什么\(LCT\),圆方树,\(exlucas\)之类的,但是一个都没考. day1 提前十几分钟进了考场,可以提前动电脑,赶紧把\(vimrc\)打了 ...
- 【APIO2018】铁人两项(圆方树,动态规划)
[APIO2018]铁人两项(圆方树,动态规划) 题面 UOJ 洛谷 BZOJ 题解 嘤嘤嘤,APIO的时候把一个组合数写成阶乘了,然后这题的70多分没拿到 首先一棵树是很容易做的,随意指定起点终点就 ...
- urllib的实现---cookie处理
Cookie的使用 用 Python 来登录网站, 用Cookies记录登录信息, 然后就可以抓取登录之后才能看到的信息. 什么是cookies? Cookie,指某些网站为了辨别用户身份.进行ses ...
- PHP-FPM安装报错解决
PHP源码安装 setenforce 0--------------------------------------------------------------------安装php时的报错che ...
- centos7搭建ELK Cluster集群日志分析平台(三):Kibana
续 centos7搭建ELK Cluster集群日志分析平台(一) 续 centos7搭建ELK Cluster集群日志分析平台(二) 已经安装好elasticsearch 5.4集群和logst ...
- 200行Go代码实现自己的区块链——区块生成与网络通信
go启动后,可以用telnet登录访问. 注意端口配置写在.env里面. 源码:https://github.com/mycoralhealth/blockchain-tutorial/tree/ma ...
- 解决在vue中axios请求超时的问题
查看更多精彩内容请访问我的新博客:https://www.cssge.com/ 自从使用Vue2之后,就使用官方推荐的axios的插件来调用API,在使用过程中,如果服务器或者网络不稳定掉包了, 你们 ...
- vetur插件提示 'v-for' directives require 'v-bind:key' directives.错误的解决办法
在用vscode编写vue代码时,因为安装的有vetur插件,所以当代码中有v-for语法时,会提示 [vue-language-server] 'v-for' directives require ...
- 【译】8. Java反射——注解
原文地址:http://tutorials.jenkov.com/java-reflection/annotations.html ================================== ...
- Vuex速学篇:(2)利用state保存新闻数据
回顾 以前我们在做这个新闻列表的时候,是一个写死的数据 export default{ data(){ return{ newslist:[ {newsid:"101",pubti ...