1、https:https SSL证书安装的搭配(搭配https ssl本地测试环境)

2、接口参数加密+时效性验证+私钥 :实现方式参考

现在,大部分App的接口都采用RESTful架构,RESTFul最重要的一个设计原则就是,客户端与服务器的交互在请求之间是无状态的,也就是说,当涉及到用户状态时,每次请求都要带上身份验证信息。实现上,大部分都采用token的认证方式,一般流程是:
1. 用户用密码登录成功后,服务器返回token给客户端;
2. 客户端将token保存在本地,发起后续的相关请求时,将token发回给服务器;
3. 服务器检查token的有效性,有效则返回数据,若无效,分两种情况:
• token错误,这时需要用户重新登录,获取正确的token
• token过期,这时客户端需要再发起一次认证请求,获取新的token
然而,此种验证方式存在一个安全性问题:当登录接口被劫持时,黑客就获取到了用户密码和token,后续则可以对该用户做任何事情了。用户只有修改密码才能夺回控制权。
如何优化呢?第一种解决方案是采用HTTPS。HTTPS在HTTP的基础上添加了SSL安全协议,自动对数据进行了压缩加密,在一定程序可以防止监听、防止劫持、防止重发,安全性可以提高很多。不过,SSL也不是绝对安全的,也存在被劫持的可能。另外,服务器对HTTPS的配置相对有点复杂,还需要到CA申请证书,而且一般还是收费的。而且,HTTPS效率也比较低。一般,只有安全要求比较高的系统才会采用HTTPS,比如银行。而大部分对安全要求没那么高的App还是采用HTTP的方式。
我们目前的做法是给每个接口都添加签名。给客户端分配一个密钥,每次请求接口时,将密钥和所有参数组合成源串,根据签名算法生成签名值,发送请求时将签名一起发送给服务器验证。这样,黑客不知道密钥,不知道签名算法,就算拦截到登录接口,后续请求也无法成功操作。不过,因为签名算法比较麻烦,而且容易出错,只适合对内的接口。如果你们的接口属于开放的API,则不太适合这种签名认证的方式了,建议还是使用OAuth2.0的认证机制。
我们也给每个端分配一个appKey,比如Android、iOS、微信三端,每个端分别分配一个appKey和一个密钥。没有传appKey的请求将报错,传错了appKey的请求也将报错。这样,安全性方面又加多了一层防御,同时也方便对不同端做一些不同的处理策略。
另外,现在越来越多App取消了密码登录,而采用手机号+短信验证码的登录方式,我在当前的项目中也采用了这种登录方式。这种登录方式有几种好处:
4. 不需要注册,不需要修改密码,也不需要因为忘记密码而重置密码的操作了;
5. 用户不再需要记住密码了,也不怕密码泄露的问题了;
6. 相对于密码登录其安全性明显提高了。

参考文档

转载于:https://www.cnblogs.com/xiaoweigogo/p/7805109.html

接口”安全机制”的设计相关推荐

  1. CCBPM工作流引擎的消息机制与设计

    为什么80%的码农都做不了架构师?>>>    CCBPM工作流引擎的消息机制与设计 关键字:ccflow jflow 消息机制 流程引擎 自动发送短信 发送邮件 发送消息 流程引擎 ...

  2. 《深入理解mybatis原理》 MyBatis缓存机制的设计与实现

    本文主要讲解MyBatis非常棒的缓存机制的设计原理,给读者们介绍一下MyBatis的缓存机制的轮廓,然后会分别针对缓存机制中的方方面面展开讨论. MyBatis将数据缓存设计成两级结构,分为一级缓存 ...

  3. 自己动手写CPU之第七阶段(5)——流水线暂停机制的设计与实现

    将陆续上传本人写的新书<自己动手写CPU>,今天是第28篇.我尽量每周四篇 China-pub的预售地址例如以下(有文件夹.内容简单介绍.前言): http://product.china ...

  4. Android 输入系统 ANR机制的设计与实现

    /   今日科技快讯   / 据报道,字节跳动将于今年下半年在国内推出一款音乐流媒体产品,目前该产品已进入关键开发阶段,产品名称暂定"飞乐",项目内部代号为"luna&q ...

  5. 反思|Android 输入系统 ANR机制的设计与实现

    反思 系列博客是我的一种新学习方式的尝试,该系列起源和目录请参考 这里 . 概述 对于Android开发者而言,ANR是一个老生常谈的问题,站在面试者的角度,似乎说出 「不要在主线程做耗时操作」 就算 ...

  6. 基于FPGA实现PCI-E接口和DMA控制器设计

    随着网络的飞速发展,人们可获取的信息量日益增长,数据的处理及存储速率的要求也越来越高.万兆网(10Gb以太网)的普及,高速存储设备的应用(如DDR2,传输速率可达800M)对系统带宽带来极大的挑战. ...

  7. 流水线暂停机制的设计

    流水线暂停机制的设计 1. 为什么要引入暂停机制 2. 暂停机制的设计 3. CTRL模块 4. 流水线暂停机制的实现 4.1 CTRL模块 其他模块 1. 为什么要引入暂停机制 这是未添加流水线暂停 ...

  8. Java 接口回调机制

    日常开发中接口回调机制无处不在,刚开始用时却总是晕晕乎乎,网上也有很多相关的文章介绍,但总是没有看得太明白,今天端午假期正好花时间来总结一下,我们按如下顺序介绍 一.什么是接口回调 在应用开发中,接口 ...

  9. Android开发之通过接口回调机制加载数据(源代码分享)

    Android开发之通过接口回调机制加载数据的简单实现,在实际开发中通过callback方法得到网络加载的数据的使用频率远比通过直接开启线程或异步任务加载数据的频率高的多,这篇文章的代码将简单实现该机 ...

  10. Javascript继承机制的设计思想

    我一直很难理解Javascript语言的继承机制. 它没有"子类"和"父类"的概念,也没有"类"(class)和"实例" ...

最新文章

  1. 4springboot:日志(上)
  2. Elasticsearch入门和基本使用
  3. cpp cu入门教程
  4. 【软件开发底层知识修炼】二十六 ABI-应用程序二进制接口 学习总结文章目录
  5. 在Intranet环境中保护.NETWeb应用程序方案(转)
  6. 装饰模式-包装request和response
  7. SELinux 基础命令
  8. set 排序_堆排序C++实现
  9. 用python做股票因子分析_什么是多因子量化选股模型?
  10. mac上设定prosody 用户
  11. 如何保持福禄克CFP2-100-Q、OFP2-100-Q等光纤测试仪器的洁净?
  12. php notice错误是什么意思,PHP中Notice错误常见解决方法
  13. java apktool if_apktool使用教程
  14. 企业竞争力分析及综合评价体系的构建
  15. The server returned the following error: 无法与服务器建立连接(0x80072EFD)
  16. B端产品-定义、分类、竞品分析、与C端产品的区别
  17. 监控记录交换机端口流量及性能,MSRM3一分钟搞定
  18. Django:在DDTCMS中使用Photologue做相册并增加封面的探索
  19. Win10下运行复活之秦殇前传
  20. 需求分析-需求调研步骤和方法

热门文章

  1. 基本系统设备_正规全体灭火系统承包资质品质更好_天霖工程
  2. lpop 原子_从夸克到原子,到元素周期表
  3. html5注册阿里巴巴作业,面试分享:2018阿里巴巴前端面试总结(题目+答案)
  4. matlab常用数学函数实验,实验二-MATLAB的数学运算基础.ppt
  5. java套接字通信_Java网络通信套接字 | 学步园
  6. pandas将字符串转换成时间_数据处理利器 pandas 实例详解 (下)
  7. Swift 5 从Model, Struct或Class转Dictionary
  8. TensorFlow by Google过拟合优化 Machine Learning Foundations: Ep #7 - Image augmentation and overfitting
  9. matlab光流彩图,hs 用matlab编译的经典光流算法HS ,附有程序需 图像 238万源代码下载- www.pudn.com...
  10. Presto 安装与部署