在APP开放接口API的设计中,避免不了的就是安全性问题。

  一、https协议

  对于一些敏感的API接口,需要使用https协议。https是在http超文本传输协议加入SSL层,它在网络间通信是加密的,所以需要加密证书。

  二、设计签名

  原理:用户登录时向服务器提供用户认证信息(如账号和密码),服务器认证完后给客户端返回一个Token令牌,用户再次获取信息时,需带上此令牌。如果令牌正确,则返回数据。

  对于获得Token令牌信息后,访问用户相关接口,客户端请求的url需要带上如下参数:

  时间戳:timestamp

  Token令牌:token

  Sign签名:sign

  Sign生成规则可以是:将所有用户请求的参数按照字母排序(包括timestamp、token),然后根据MD5(可以加点salt),全部大写,生成sign签名,这就是所说的url签名算法。

  然后登陆后每次调用用户信息时,带上sign、timestamp、token参数。

  三、具体实现

  1、客户端向服务器端发送用户认证信息(如用户名和密码),服务器端接收到请求后,验证用户信息是否正确。

  如果正确:则返回一个唯一不重复的字符串(一般为UUID),然后在Redis中维护Token——Uid的用户信息关系,以便其他API对token验证。

  如果错误:则返回错误代码。

  2、服务器设计一个url请求拦截规则

  (a)、判断是否包含timestamp、token、sign参数,如果不含或缺少,则返回错误代码。

  (b)、判断服务器接到请求的时间和参数中的时间戳(timestamp)是否相差很长一段时间(时间自定义如半小时),如果超过则说明该url已经过期(如果url被盗,他改变了时间戳,但是会导致sign签名不相等)。

  (c)、判断token是否有效,根据请求过来的token,查询Redis缓存中的Uid,如果获取不到这说明token已过期。

  (d)、根据用户请求的url参数,服务器端按照同样的规则生成sign签名,对比签名是否相等,如果相等,则放行。(自然url签名,也无法100%保证其安全,也可以通过公钥AES对数据和url加密,但这样无法确保公钥丢失,所以签名只是很大程度上保证安全)。

  (e)、此url拦截只需对获取身份认证的url放行(如登录url),其他所有的url都需要拦截。

APP开放接口API安全性——Token令牌Sign签名的设计与实现的更多相关文章

  1. 【转】App开放接口api安全性—Token签名sign的设计与实现

    前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等, ...

  2. App开放接口api安全性—Token签名sign的设计与实现

    前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等, ...

  3. App开放接口API安全性 — Token签名sign的设计与实现

    在app开放接口API的设计中,避免不了的就是安全性问题. 一.https协议 对于一些敏感的API接口,需要使用https协议. https是在http超文本传输协议加入SSL层,它在网络间通信是加 ...

  4. App开放接口API安全性之Token签名Sign的设计与实现

    前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等, ...

  5. App开放接口api安全性的设计与实现

    前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证, 那么这就需要用户提供一些信息,比如用户名密码等 ...

  6. token和sign

    前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等, ...

  7. 开放接口/RESTful/Api服务的设计和安全方案详解

    一.总体思路 这个涉及到两个方面问题:一个是接口访问认证问题,主要解决谁可以使用接口(用户登录验证.来路验证)一个是数据数据传输安全,主要解决接口数据被监听(HTTPS安全传输.敏感内容加密.数字签名 ...

  8. 开放接口/RESTful/Api服务的设计和安全方案

    总体思路 这个涉及到两个方面问题:一个是接口访问认证问题,主要解决谁可以使用接口(用户登录验证.来路验证)一个是数据数据传输安全,主要解决接口数据被监听(HTTPS安全传输.敏感内容加密.数字签名) ...

  9. 开放数据接口 API 简介与使用场景、调用方法

    此文章对开放数据接口 API 进行了功能介绍.使用场景介绍以及调用方法的说明,供用户在使用数据接口时参考之用. 在给大家分享的一系列软件开发视频课程中,以及在我们的社区微信群聊天中,都积极地鼓励大家开 ...

随机推荐

  1. c#基础 第二讲

    判断一个人的体重是否为标准体重 计算公式:男生:体重(kg)-身高+100=±3(在此范围内为标准体重) 女生:体重(kg)-身高+110=±3 using System; using System. ...

  2. MFC中控件的TAB顺序

    本文来自: http://hi.baidu.com/qingcaichongch/item/47f7ae14de8cbef6ddeeca42 在MFC中添加控件后,按Ctrl+d可以改变控件TAB顺序 ...

  3. PHP mysql 扩展库 操作mysql数据库步骤

    一.mysql 扩展库操作mysql数据库步骤如下: 1.获取连接 2.选择数据库 3.设置操作编码 4.发送指令(ddl数据定义/dml数据操作/dql数据查询/dtl数据事务控制) 5.接收返回的 ...

  4. js 连等赋值 分析

    JavaScript权威指南-第6版 4.11 赋值表达式 提到了连等赋值的情况,但是解释的不够详细,所以在此总结下: 首先看书上最重要的一句话: 这句话总结下就是: A = B ; // 整个表达式 ...

  5. 在Ubuntu上搭建hive环境

    一.准备软件 二.安装虚拟机 1.新建虚拟机向导 2.安装客户机操作系统 3.用户名密码设置 4.设置虚拟机名称和保存位置 5.处理器设置 6.设置虚拟机内存 7.然后一直next下去(有的根据自己的 ...

  6. 预见未来丨机器学习:未来十年研究热点 量子机器学习(Quantum ML) 量子计算机利用量子相干和量子纠缠等效应来处理信息

    微软研究院AI头条 https://mp.weixin.qq.com/s/SAz5eiSOLhsdz7nlSJ1xdA 预见未来丨机器学习:未来十年研究热点 机器学习组 微软研究院AI头条 昨天 编者 ...

  7. green rgb(255, 102, 0) #FF6600

    w通过元素背景色定位元素,改变其属性. style="background-color: #FF6600" <script> var w = document.quer ...

  8. rrdtool ubuntu python snmpwalk

    rrdtool install: apt-get install libpango1.0-dev libxml2-dev wget https://packages.debian.org/wheezy ...

  9. datasnap 关于lifecycle的问题

    首先DSServerClass的lifecycle属性有Invocation.Server.Session三种模式: 简单叙述一下三点区别: server:datasnap只初始化一个TDSServe ...

  10. 剑指Offer——删除链表中重复的结点

    题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理 ...