如今各种API接口层出不穷,一个API的好与不好可以从很多方面来考量,其中“安全性”就是一个API接口最基本也是最重要的一个特点。本文就来跟大家聊聊关于API接口开发的安全性问题。

所谓接口服务器端直接根据user_id来做相应的会员操作,这是非常危险的接口处理,等于把当前的会员系统给完全暴露出来,只要对方改一下user_id就可操作所有会员对应的接口。

一般在PC端,我们是通过加密的cookie来做会员的辨识和维持会话的;但是cookie是属于浏览器的本地存储功能。APP端不能用,所以我们得通过token参数来辨识会员;而这个token该如何处理呢?

在做接口加密前,我们先来看以下几个方案:

方案 1

与APP端开发人员约定特定的md5组合算法,然后两端比对一下,如果相同就allow,不相同就deny;但是,这也是不安全的,如果APP程序被反编译,这些约定的算法就会暴露,特别是在安卓APP中,有了算法,完全就可以模拟接口请求通过验证。

方案2

会员登录的时候请求登录接口,然后服务器端返回给客户端一个token,该token生成的规则是 网站公钥 + 当前uid + 当前时间戳 + 一段随机数双重加密,根据需求决定是把该token放进cache等一段时间自动失效,还是放进数据库(如果要放进数据库的话,单独拎出一张表来,顺便记录用户的登录,登出时间),在用户登出登录的时候改变一下,确保该token只能在用户人为登出登录之间有用。

为保安全,应保证让用户在一段时间内自动退出;此方案配合Linux和数据库的权限管理可以防外又防内。

方案3

通过对称加密算法,该加密算法对uid+网站公钥进行时效加密,在一定时效内可用。在会员登录成功时,服务器端对该ID加密后返回给客户端,客户端每次请求接口的时候带上该参数,服务器端通过解密认证。

但是这样做,也是不安全的。因为,防外不防内,听说这次的携程宕机就是因为内部离职人员的恶意操作。内部不怀好意的人员如果知道相应的算法规则后,就算没有数据库权限,也可以通过接口来操作相关会员。

方案4

数据库会员表的password是带上了随机密窜并经过双重加密的md5值;在用户登录的时候,我返回会员相应的uid和password,password虽然是明文的,别人知道也不能登录,毕竟是经过加密的,然后每次请求接口的时候,通过主键uid可以很快的找到当前uid对应的token,然后再来比对。

但是这样想法是too yang too simple的,抓包的人虽然不能通过密文密码来登录该会员,然而一旦知道了这个token,除非用户更改密码,否则也可以一直通过这个token来操作该会员的相关接口。

除了以上这些,数据格式最好使用JSON格式数据,因为JSON有较好的跨平台性。在生成JSON的时候,要注意json的两种格式:对象(字典)与 数组;mobile端开发语言中没有类似PHP中的foreach不能遍历对象,只能遍历数组,他们对对象的操作一般都是通过键名去取键值。不管是成功,还是失败。接口必须提供明确的数据状态信息,并且不能返回NULL,如果返回NULL的话,在IOS端会崩掉。

关于API接口安全性问题的解决方案还有很多,需要在实际的实践上多多思考总结,这样才能让开发出来的API更加强大。

api接口加密_谈谈API接口开发中的安全性如何解决相关推荐

  1. AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题

    AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,是个比较经典的例子. 一 AOP的基本概念 (1)Asp ...

  2. 马小看前端( 在开发中遇到问题如何解决 )

    马小看前端( 在开发中遇到问题如何解决 ) 今天我们来说说,在开发中遇到问题该如何去找到并且去解决他,相信很多人在开发中不少遇到过bug这个东西,有的对于bug已经无可奈何,搞人心态哦,不过bug是一 ...

  3. 学习笔记_关于switch在whlie中无限循环的解决办法_C语言

    学习笔记_关于switch在whlie中无限循环的解决办法_C语言 今天在做作业的时候突然发现一个问题 #include<stdio.h> int main() {int a;while( ...

  4. api接口加密_接口加密如何测试?

    摘要算法: 对明文编码生成信息摘要,以防止被篡改.比如MD5使用的是Hash算法,无论多长的输入,MD5都会输出长度为128bits的一个串. 摘要算法不要秘钥,客户端和服务端采用相同的摘要算法即可针 ...

  5. java api文档_细说API – 文档和前后端协作

    在上一篇文章--<细说API – 重新认识RESTful>中介绍了如何理解和设计RESTful风格的API,现在我们来聊聊如何有效的呈现API文档,以及前后端协作的方式. 我经历过一些没有 ...

  6. 处理接口超时_架构设计 | 接口幂等性原则,防重复提交Token管理

    一.幂等性概念 1.幂等简介 编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同.就是说,一次和多次请求某一个资源会产生同样的作用影响. 2.HTTP请求 遵循Http协议的请 ...

  7. java comparator接口类_常见的接口与类 -- Comparator

    接口Comparator 1.1 前面我们讲过Java提供了一个用于比较的接口Comparable,提供了一个比较的方法,所有实现该接口的类,都动态的实现了该比较方法.实际上Java中除了比较一个接口 ...

  8. api如何使用_记录API:技术作家和工程师指南

    在这门有关编写REST API文档的课程中,我不只是在谈论抽象概念,而是通过直接的动手方法将REST API关联起来.首先,您将通过使用简单的天气API在站点上放置天气预报来了解API文档. 使用AP ...

  9. api工程IOS学习:在IOS开发中使用GoogleMaps SDK

    今天一直在学习api工程之类的问题,今天正好有机会和大家分享一下. 官方文档地址:https://developers.google.com/maps/documentation/ios/start# ...

最新文章

  1. 用Python分析5000+抖音大V,粉丝最喜欢的视频类型是它
  2. html语言技术基础,第2章Web编程基础HTML语言技术方案.ppt
  3. Linux内核开发之将驱动程序添加到内核
  4. spring boot 字体文件等静态资源无法获取
  5. flink sql client读取hive时卡住
  6. Fedora/RedHat上使用Docker命令搭建Mysql服务器
  7. html5双波浪线怎么添加,在WPS中如何给段落添加双波浪线边框
  8. 自动化运维工具Ansible连续剧之--介绍安装与连接
  9. 【Python笔记】字典
  10. c语言定义一个strcmp函数,定义一个strcmp函数实现两个字符串比较,函数原型为int strcmp(char * p1,...
  11. ISO 20088耐低温泄漏的测定_ISO20088-1/ISO20088-2/ISO20088-3
  12. 自己动手,丰衣足食。普通键盘实现键盘宏(Windows和Mac版)
  13. Excel 公式复制同步到其他单元格
  14. 智课雅思词汇---十二、vent是什么意思
  15. HBuiilderX代码美化插件format(即js-beautify)配置文件
  16. android串口开发!一年后斩获腾讯T3,附面试题答案
  17. MySQL函数 NOW()
  18. python利用列表计算斐波那契数列前30项并输出_python 题目:斐波那契数列计算;题目:站队顺序输出;题目:合法括号组合的生成;题目:用户登录(三次机会)...
  19. OPenGL 学习笔记之 VAO VBO EBO 以及SHADER 并使用其绘制三角形
  20. DSP28335的硬件SPI使用(无FIFO)总结

热门文章

  1. 从接触FPGA开始...
  2. 通过 SSH 连接到 VMware NAT 模式下的 Ubuntu 虚拟机环境
  3. 线性规划——规范型,标准型,基阵、基本解、基本可行解、基变量、非基变量.... 概念梳理
  4. 填谷式无源pfc电路_有源PFC电路上各个元件的作用-安泰维修
  5. 运用HashMap和ArrayList打造一个简单的带文件的控制台学生管理系统(附上类及类方法的思维导图+控制台运行界面截图+源代码)
  6. arduino电源接口直径多大_求助:Arduino UNO(如下图)有三种供电方式:USB供电,5v(供应芯片,下面一排接口中“...
  7. eventbus使用_Android EventBus框架的使用介绍
  8. 活动分享|今晚启明云端与您相约立创直播间,红包\彩屏开发板送不停!
  9. python27文件夹_为什么python27.dll不是python安装文件夹的一部分,而是在Windows系统文件夹中...
  10. 公益性岗位计算机考试内容,公益性岗位公共基础知识:计算机概述-计算机硬件系统(1)...