【接口安全】接口合法性验证加密验签SIGN 签名规则
在对接API接口时,接口地址和参数结构都很容易被黑客抓包,从而模拟发送请求。
考虑到安全性,防止别人冒名调用,要对接口请求进行合法性验证。
基本原理如下
双方约定 APPID:参与签名和网络传输 APPSecretKey:约定秘钥,保存在双发服务器,只参与签名,不参与网络传输
签名方法
调用API时,需要将所有参数名称以及参数值加入签名,
即:系统级参数(除去SIGN)名称、系统级参数值、应用级参数名称、应用级参数值全部加入签名。
签名参数排序
签名时,根据参数名称,将除签名(sign)外所有请求参数按照字母先后顺序排序: key + value .... key + value 。
注:
、排序若首字母相同,则对第二个字母进行排序,以此类推。
、value无需编码。
、对于非必选参数,如果没有value值,也参与签名。(说明:非必选参数没有value值时,将参数名放到字符串中,即参数名要参加签名)
例如:将“foo=,bar=,baz=三”排序为“bar=,baz=三,foo=”参数名和参数值链接后,得到拼装字符串bar2baz三foo1。
签名算法
将分配的得到的密钥(SecretKey)接到参数字符串尾部进行md5加密(UTF8编码),再转化成大写,
格式是:md5(key1value1key2value2...Secret)。
双方根据本次请求的参数采用相同的排序生成字符串,并用相同加密算法(一般MD5,也可以用多次加密处理),最后得到的消息摘要sign肯定是一样的,依次判断请求的合法性。
服务端在处理的时候要注意多次请求避免重复处理的情况,这时可以通过三方业务唯一标识ID去区分处理,接口响应要保持幂等性(在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。)。
当然上面的加密方式消息体依然是明文传输的,如果有重要信息,还是有泄露信息的可能性存在。
更高级的方法是参考HTTS的原理,通过公钥、私钥进行消息体的加密处理。可参考之前写的HTTS加密原理 http://www.cnblogs.com/jhli/p/6575828.html
搞定!
【接口安全】接口合法性验证加密验签SIGN 签名规则的更多相关文章
- 对飞猪H5端API接口sign签名逆向实验
免责声明 本文章所提到的技术仅用于学习用途,禁止使用本文章的任何技术进行发起网络攻击.非法利用等网络犯罪行为,一切信息禁止用于任何非法用途.若读者利用文章所提到的技术实施违法犯罪行为,其责任一概由读者 ...
- RSA后台签名前台验签的应用(前台采用jsrsasign库)
写在前面 安全测试需要, 为防止后台响应数据返给前台过程中被篡改前台再拿被篡改后的数据进行接下来的操作影响正常业务, 决定采用RSA对响应数据进行签名和验签, 于是有了这篇<RSA后台签名前台验 ...
- 数据安全管理:RSA加密算法,签名验签流程详解
本文源码:GitHub·点这里 || GitEE·点这里 一.RSA算法简介 1.加密解密 RSA加密是一种非对称加密,在公开密钥加密和电子商业中RSA被广泛使用.可以在不直接传递密钥的情况下,完成加 ...
- 接口鉴权,提供给第三方调用的接口,进行sign签名
//场景:公司要跟第三方公司合作,提供接口给对方对接,这样需要对接口进行授权,不然任何人都可以调我们公司的接口,会导致安全隐患: 思路: 在每个接口请求参数都带上ApiKey 和sign签名: 我们在 ...
- python RSA加密、解密、签名
python RSA加密.解密.签名 python中用于RSA加解密的库有好久个,本文主要讲解rsa.M2Crypto.Crypto这三个库对于RSA加密.解密.签名.验签的知识点. 知识基础 加密是 ...
- 支付接口中常用的加密解密以及验签rsa,md5,sha
一.常用加密类型分类 1.对称加密:采用单钥对信息进行加密和解密,即同一个秘钥既可以对信息进行加密,也可以进行解密.此类型称之为对称加密.特点速度快,常用于对大量数据信息或文件加密时使用.常用例子:D ...
- java安全入门篇之接口验签
文章大纲 一.加密与验签介绍二.接口验签实操三.项目源码下载 一.加密与验签介绍 大多数公共网络是不安全的,一切基于HTTP协议的请求/响应(Request or Response)都是可以被 ...
- 支付宝支付集成中:refund_fastpay_by_platform_nopwd接口服务器通知验签不通过
在做p2p配资平台,也就是公司的项目,遇到了一个问题:refund_fastpay_by_platform_nopwd接口服务器通知验签不通过 下面是实录: 通知服务器的POST过来的数据: 1.si ...
- Spring AOP实现接口验签
因项目需要与外部对接,为保证接口的安全性需要使用aop进行方法的验签; 在调用方法的时候,校验外部传入的参数进行验证, 验证通过就执行被调用的方法,验证失败返回错误信息: 不是所有的方法都需要进行验签 ...
随机推荐
- WebService系列一:WebService简介
原文链接:http://www.cnblogs.com/xdp-gacl/p/4259109.html 一.WebService是什么 WebService是一种跨编程语言和跨操作系统平台的远程调用技 ...
- e805. 监听JProgressBar的数值变化
Whenever the value of a progress bar is changed, a change event is fired. In fact, the event is also ...
- e742. 加入标签的可拖动能力
This example demonstrates how to modify a label component so that its text can be dragged and droppe ...
- android中清空一个表---类似truncate table 表名 这样的功能 android sqlite 清空数据库的某个表
public void clearFeedTable(){ String sql = "DELETE FROM " + FEED_TABLE_NAME +";" ...
- Sublime text 3 中Package Control 的安装与使用方法
Package Control插件本身是一个为了方便管理插件的插件,在Sublime text 3中,Package Control 的安装方法一开始出来的方法是要先安装Git, 再输入代码来安装,原 ...
- 关于TensorFlow多种安装方式
Tensorflow的官网其实给出了很详细的安装教程,细分包括: Pip install: Install TensorFlow on your machine, possibly upgrading ...
- UGUI 加载图片
图片是动态加载的,然后转换为sprite赋值到ugui的按钮上 代码如下 using UnityEngine; using System.Collections; using System.IO; u ...
- 有术:DIY代理服务器
FQ有术:DIY代理服务器 公司HTTP代理穿透+手機ShadowSocks+SSH翻牆 利用SSH代理爬墙 http://bestvpnchina.net/
- Java-Tomcat for Mac配置
1.eclipse version: Eclipse Java EE IDE for Web Developers. Version: Oxygen.1 Release (4.7.1) Build i ...
- spring 配置 Java配置类装配bean
https://www.cnblogs.com/chenbenbuyi/p/8457700.html 自动化装配的确有很大的便利性,但是却并不能适用在所有的应用场景,比如需要装配的组件类不是由自己的应 ...