专栏首页后端开发随笔细说RESTful API安全之概述

细说RESTful 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本身的安全防护的外围,还需要一些其他的安全保障。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 细说RESTful API之版本管理

    API版本管理的重要性不言而喻,对于API的设计者和使用者而言,版本管理都有着非常重要的意义。 首先,对于API的设计和实现者而言,需要考虑向后兼容性,但是随...

    2Simple
  • 细说RESTful API之入门介绍

    REST(英文:Representational State Transfer,又称具象状态传输)是Roy Thomas Fielding博士于2000年在他的...

    2Simple
  • Docker实践之04-操作容器

    可以使用命令docker container ls查看容器信息,默认情况下只能查看到当前处于启动状态的容器。如果需要查看所有容器信息,需要使用-a参数,如:do...

    2Simple
  • Harbor进阶秘笈:API 的使用和集成

    【编者注】本文介绍如何通过 API 与 Harbor 交互,用户可在此基础上开发各类管理工具或者把 Harbor 集成到其他系统中。Harbor API 在开发...

    Henry Zhang
  • 正确甄别API、REST API、RESTful API和Web Service之间的异同

    看到API你会想起什么?是接口、第三方调用、还是API文档?初看你可能会觉得这太熟悉了,这不是系统开发日常系列吗?但你仔细想一想,你会发现API的概念在你脑海里...

    IT大咖说
  • iOS应用架构谈 网络层设计方案

    网络层在一个App中也是一个不可缺少的部分,工程师们在网络层能够发挥的空间也比较大。另外,苹果对网络请求部分已经做了很好的封装,业界的AFNetworking也...

    rectinajh
  • 《HTML5实战》Lesson11

    Week12  2016/11/30上午1-4节 一、复习 二、使用地图 1、window.navigator 对象包含有关访问者浏览器的信息。 JavaS...

    用户1733354
  • 撰写合格的REST API

    两周前因为公司一次裁人,好几个人的活都被按在了我头上,这其中的一大部分是一系列REST API,撰写者号称基本完成,我测试了一下,发现尽管从功能的角度来说,这些...

    tyrchen
  • 开发者必备“武器”API 接口,以最少成本开发应用

    五年前,我们就听别人说“软件正在蚕食整个世界”。SaaS类应用程序的数量呈爆发趋势,API领域的软件创新数量也在不断上升,API可以提供关键的连接,并不断提升重...

    BestSDK
  • RESTful API怎样设计更合理

    网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备……)。

    javascript.shop

扫码关注云+社区

领取腾讯云代金券