首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏北先生

    【笔记】API 接口签名验证

    那么就有几个问题需要注意一下: 请求参数是否被篡改; 请求来源是否合法; 请求是否具有唯一性; 参数签名方式: 定义规则: 这种方式是主流。 它要求调用方按照约定好的算法生成签名字符串,作为请求的一部分,接口提供方验算签名即可知是否合法。 步骤通常如下: 接口提供方给出 appid 和 appsecret 调用方根据 appid 和 appsecret 以及请求参数,按照一定算法生成签名 sign 接口提供方验证签名 生成签名的步骤如下: 这里使用了 md5 的算法进行签名,也可以自行选择其他签名方式,例如 RSA,SHA 等。 秘钥的保存: 在签名的过程中,起到决定性作用之一的是 appsecret,因此如何保存成为关键。

    2.7K30发布于 2021-08-09
  • 来自专栏友儿

    API签名设计(php版)

    API签名设计 可变性 每次的签名必须是不一样的。 时效性 每次请求的时效,过期作废等。 唯一性 每次的签名是唯一的。 完整性 能够对传入数据进行验证,防止篡改。 +x+Y0PTBoenqmH+qis79LaS4R3BL6Fi2F83EQBIDk38RDrzDYrlpTCbKg4iPCPCDOolxSNlF4xs9z2feb2QQmYcJ7H/QISabCnEV/ /z5qPDcWbvAY569UjcMPUz3Me4oOo2VMpOgVYFJRe3KhBpC4vx5NSHxBAHXrb6uO5j5kmEFIRMpW4PXONQnmrpN93ZwIDAQAB'; $data['sign']) static::message(['code' => 204, 'msg' => '数据签名不存在!']); if (! array($ip, $long) : array('0.0.0.0', 0); return $ip[$type]; } } //MD5签名 //以用户提交抢购商品为例 $data

    1.8K10编辑于 2022-09-11
  • 来自专栏猿天地

    再谈前后端API签名安全?

    上次《前后端API交互如何保证数据安全性?》文章中,我们介绍了如何在Spring Boot框架中去统一处理数据的加解密。 无论是GET还是POST都可以做签名 明文没关系,关键是这个请求我复制到浏览器中打开,把name改成别的值,如果真的存在的话也是能返回结果的。问题就在这,参数被修改了,后端无法识别,这是第一个问题。 第一种方式 参数中加签名,前后端约定一个key,将参数按照字母排序拼接成一个字符串,然后拼接上key,最后用MD5或者SHA进行加密,最后得到一个加密的签名,作为参数传到后端进行验证。 同时因为我这边用的axios来请求数据,可以使用请求拦截器,在请求之前统一对请求进行签名操作,不用在每个地方单独去处理。 此时到后台的数据就是参数信息+签名时间,比如:{name:"yjh",signTime:19210212121212}, 签名就是{name:"yjh",signTime:19210212121212}

    1.2K40发布于 2018-11-23
  • 来自专栏崔哥的专栏

    API 请求签名生成规则

    总结一下常见的 签名生成规则 规则1 每个 HTTP 请求中均需要携带以下的 HTTP 标头字段(HTTP Request Header) 默认名称 带 RC-前缀 类型 说明 App-Key RC-App-Key 您需要参考下文的签名计算方法生成该字段的值 签名计算方法 将以下三个字符串按顺序(App Secret + Nonce + Timestamp)拼接成一个字符串,进行 SHA1 哈希计算。 Nonce:随机数 Timestamp:时间戳 以下是计算数据签名的 PHP 代码示例: // 重置随机数种子。 $timestamp); 规则2 $appkey='abc';//双方约定的key,不参与http请求,只用于计算签名 $sign=112233;//请求带的签名 $params=[ 'timestamp =$value; } //生成签名 $sign2=md5($str);

    1.2K20编辑于 2022-05-24
  • 来自专栏林喜东的专栏

    如何设计一个API签名

    前言 大部分情况下,我们使用已有的API签名方案(如腾讯云API签名、阿里云APi签名、亚马逊API签名等等)即可,无需从零开始设计一个API签名方案。 当然,有需要自己设计一个签名方案的场景也可参考一下。 1、API签名是什么 API签名可以理解为就是对API的调用进行签名保护。 前,必须向系统申请一个唯一的标识 (2)系统为每个调用者分配一个唯一的ID,这里暂定为SecretID (3)调用者调用API时带上该SecretID (4)服务端 通过SecretID确认调用者身份 1)校验时间有效性Timestamp (2)校验Nonce唯一性 (3)提取SecretId和签名信息 (4)根据SecretId提取用户密钥SecretKey,用于生产签名 (5)拼接签名内容,生成签名 ,以下部分暂不考虑包头签名,原理相通,实现时,自己加上即可 (3)这里的签名算法,指定为HmacSHA256 (4)拼接规则是多样化的,这里的各种拼接规则仅供参考

    6.1K103发布于 2019-12-22
  • 来自专栏PulseLine

    基于YAPI的API实时签名方案

    q=yapi-plugin-pl 关于平台的使用,可以参考官方文档,本篇文章针对使用Yapi做API测试时,期望对每条请求增加特定算法的签名参数(header或者body中),尤其是实时签名,提供了特别好的解决方案 请求信息在公共变量context里(每一个API都会有自己的context, 所以context指的就是当前执行到的那个API) context = { pathname: '/api/user', 腾讯云签名实践 本过程只为表明方法可行性(核心签名算法是否能走通),不包含完整的签名流程,完整流程可参考此处自行补充(其他流程大都是字符串拼接,参数排序,可直接查询js语法编写)。 2.1 签名串生成工具 生成签名串 https://console.cloud.tencent.com/api/explorer? ”打印出的过程参数,我们采取写死的方式,作为Yapi脚本签名算法的输入,期望是Yapi得出的签名串和“签名串生成工具”签名值一样。

    2.3K100发布于 2021-09-16
  • 来自专栏普通程序员

    怎么做开放API签名认证

    包括以下三个方面 1、请求来源(身份)要合法 2、请求参数不能被篡改 3、请求要唯一(不可复制) 为了保证数据在通信时的安全性,可以采用参数签名的方式来进行相关验证。 二、MD5参数签名 参看《MD5防止数据被篡改的做法》 我们对api查询产品接口进行优化 1.给app分配对应的key、secret 2.sign签名,调用API 时需要对请求参数进行签名验证,签名方式如下 即得到签名sign 新api接口代码如下 ? 这种方法请求多了key和sign参数,请求的时候就需要合法的key和正确签名sign才可以获取群组数据。这样就解决了身份验证和防止参数篡改问题。 sign签名安全性分析 通过上面的例子,可以看出,安全的关键在于参与签名的secret,整个过程中secret是不参与通信的,所以只要保证secret不泄露,请求就不会被伪造。 上述的sign签名的方式能够在一定程度上防止信息被篡改和伪造,保障通信的安全,这里使用的是MD5进行加密,在实际使用中可以根据需求采用其他签名算法,比如:RSA,SHA等。

    2K20发布于 2019-10-23
  • 来自专栏开发工具

    API接口签名验证,你学废了吗

    timestamp+nonce方案 nonce指唯一的随机字符串,用来标识每个被签名的请求。 更多技术干货请关注公众号【Java技术精选】 实现 请求接口:http://api.test.com/test? amp;nonce=random&SecretKey=secret"; MD5并转换为大写 sign=MD5(stringSignTemp).toUpperCase(); 最终请求 http://api.test.com =world&work=java&timestamp=now&nonce=nonce&sign=sign; 服务端 Token&AppKey(APP) 在APP开放API Token+AppKey签名验证 与上面开发平台的验证方式类似,为客户端分配AppKey(密钥,用于接口加密,不参与传输),将AppKey和所有请求参数组合成源串,根据签名算法生成签名值,发送请求时将签名值一起发送给服务器验证

    3.2K31发布于 2021-08-16
  • 来自专栏java思维导图

    开放API接口签名验证!

    timestamp+nonce方案 nonce指唯一的随机字符串,用来标识每个被签名的请求。 实现 请求接口:http://api.test.com/test? tamp=now&nonce=random&SecretKey=secret"; MD5并转换为大写sign=MD5(stringSignTemp).toUpperCase(); 最终请求http://api.test.com Token&AppKey(APP) 在APP开放API接口的设计中,由于大多数接口涉及到用户的个人信息以及产品的敏感数据,所以要对这些接口进行身份验证,为了安全起见让用户暴露的明文密码次数越少越好,然而客户端与服务器的交互在请求之间是无状态的 Token+AppKey签名验证 与上面开发平台的验证方式类似,为客户端分配AppKey(密钥,用于接口加密,不参与传输),将AppKey和所有请求参数组合成源串,根据签名算法生成签名值,发送请求时将签名值一起发送给服务器验证

    2.3K10发布于 2020-09-30
  • 来自专栏Owen's World

    PHP开发API接口签名生成及验证

    我们在设计签名验证的时候,请注意要满足以下几点: 可变性:每次的签名必须是不一样的。 时效性:每次请求的时效,过期作废等。 唯一性:每次的签名是唯一的。 第4步: 计算第3步字符串的md5值(32位),然后转成大写,得到的字符串作为sign的值。 举例: 假设传输的数据是/interface.php? 二、签名验证方法: 根据前面描述的签名参数sign生成的方法规则,计算得到参数的签名值,和参数中通知过来的sign对应的参数值进行对比,如果是一致的,那么就校验通过,如果不一致,说明参数被修改过。 php // 设置一个公钥(key)和私钥(secret),公钥用于区分用户,私钥加密数据,不能公开 $key = "c4ca4238a0b923820dcc509a6f75849b"; $secret unset($data['sign']); ksort($data); $params = http_build_query($data); // $secret是通过key在api

    1.9K10编辑于 2021-12-08
  • 来自专栏架构师修炼

    开放API接口签名验证!

    timestamp+nonce方案 nonce指唯一的随机字符串,用来标识每个被签名的请求。 实现 请求接口:http://api.test.com/test? tamp=now&nonce=random&SecretKey=secret"; MD5并转换为大写sign=MD5(stringSignTemp).toUpperCase(); 最终请求http://api.test.com Token&AppKey(APP) 在APP开放API接口的设计中,由于大多数接口涉及到用户的个人信息以及产品的敏感数据,所以要对这些接口进行身份验证,为了安全起见让用户暴露的明文密码次数越少越好,然而客户端与服务器的交互在请求之间是无状态的 Token+AppKey签名验证 与上面开发平台的验证方式类似,为客户端分配AppKey(密钥,用于接口加密,不参与传输),将AppKey和所有请求参数组合成源串,根据签名算法生成签名值,发送请求时将签名值一起发送给服务器验证

    1.7K10发布于 2020-09-30
  • 来自专栏好好学java的技术栈

    开放API接口签名验证!

    timestamp+nonce方案 nonce指唯一的随机字符串,用来标识每个被签名的请求。 实现 请求接口:http://api.test.com/test? tamp=now&nonce=random&SecretKey=secret"; MD5并转换为大写sign=MD5(stringSignTemp).toUpperCase(); 最终请求http://api.test.com Token&AppKey(APP) 在APP开放API接口的设计中,由于大多数接口涉及到用户的个人信息以及产品的敏感数据,所以要对这些接口进行身份验证,为了安全起见让用户暴露的明文密码次数越少越好,然而客户端与服务器的交互在请求之间是无状态的 Token+AppKey签名验证 与上面开发平台的验证方式类似,为客户端分配AppKey(密钥,用于接口加密,不参与传输),将AppKey和所有请求参数组合成源串,根据签名算法生成签名值,发送请求时将签名值一起发送给服务器验证

    1.5K20发布于 2020-12-08
  • 来自专栏用户7033182的专栏

    python即时查询API接口 数据签名验证

    前面我们提供了php和.net调用快递鸟API接口的示例,部分网友也使用python开发,因此我封装了相关代码,让大家少踩坑。 quote(data).replace("%20%", "%") return reqData def data_sign(shipperCode, logisticCode): """签名 reqData = quote(data).replace("%20%", "%") return reqData APIKey = "554343b2-7252-439b-b4eb

    1.2K50发布于 2020-03-30
  • 来自专栏全栈程序员必看

    开放API接口签名验证!

    timestamp+nonce方案 nonce指唯一的随机字符串,用来标识每个被签名的请求。 实现 请求接口:http://api.test.com/test? now&nonce=random&SecretKey=secret”; MD5并转换为大写sign=MD5(stringSignTemp).toUpperCase(); 最终请求http://api.test.com name=hello&home=world&work=java×tamp=now&nonce=nonce&sign=sign; 服务端 # Token&AppKey(APP) 在APP开放API Token+AppKey签名验证 与上面开发平台的验证方式类似,为客户端分配AppKey(密钥,用于接口加密,不参与传输),将AppKey和所有请求参数组合成源串,根据签名算法生成签名值,发送请求时将签名值一起发送给服务器验证

    1.5K20编辑于 2022-07-19
  • 来自专栏芋道源码1024

    SpringCloud Gateway API接口安全设计(加密 、签名、安全)

    /wY61tV7pfYRjzLhKi+OUlZmD3E/4Z+4KGZ7DrJ8qkgMtDR3HO5LAikQrare1HTW2d7juqw32ascu+uDObf4yrYNKin+ZDLUYvIDfLhThPxnZJwQ username;         form.password = password;         $.ajax({             url: "http://localhost:9000/api requestId=" + getUuid();         encrypt.encrypt(param);         const url = "http://localhost:9000/api 最后一步,添加签名 前端增加签名 跟前端约定好,json数据按照ASCII升序排序。 sign = MD5(data + requestId + timestamp);         $.ajax({             url: "http://localhost:9000/api

    2.2K31编辑于 2022-06-07
  • 来自专栏DOTNET

    asp.net web api 使用自签名SSL证书

    1自签名SSL证书的创建 创建自签名SSL工具xca为:https://sourceforge.net/projects/xca/ 创建过程 1)创建根证书 打开软件,界面如下。 给文件命名,选择文件存储的位置,这里我放在了E:\CA这个文件夹下 点击保存,弹出下页,填写密码 点击ok,弹出下页 点击 ,弹出下页 签名算法改为SHA 256,其他不变,点击 ,然后点击ok,弹出下页 4 访问自签名Https网站 一般添加安全例外就可以,但是有些会显示不全,解决办法是: 例如火狐浏览器中,点击暂时解除保护。

    3.2K70发布于 2018-03-08
  • 来自专栏全栈程序员必看

    mt4数据api接口_外汇api

    1、MT4API交易接口是什么? MT4Api接口是跨平台多账号交易接口,是将MT4交易通道以API的方式聚合在一起,帮助开发商在各经纪商不提供manager后台账号、无须EA插件的情况下,也能轻松接入不同的MT4交易平台,完成登录、交易和订单查询的功能 2、MT4API的协议传输方式 MT4 API接口是基于MT4的底层通讯格式,进行模拟信息传输的方式实现了实时通信,这不仅摆脱了MT4系统的限制,能够通过搭建第三方环境来实现和券商服务器通信,还摆脱了券商 相对 MT4 本身的交易客户端, MT4API 提供更快速的访问实时价格行情和交易访问连接。 4、MT4 API提供了哪些业务功能? MT4API交易接口跟随迈达克的更新而更新的,一年在约有一到两次的更新频率,一旦更新,有些MT4平台还可以使用,如果MT4服务商也同步更新完,则对应的MT4平台账号则无法使用,对应的软件需要同步更新MT4API

    3.7K22编辑于 2022-09-30
  • 来自专栏用户7033182的专栏

    C# 实现快递鸟API接口 数据签名通用方法

    接口对接常见的问题基本上是数据签名错误导致的接口联调失败,大家在电商平台调用快递鸟接口时,为了提供对接效率,给大家提供一些方法供大家参考。 string eEBusinessID = "test1617571"; //电商加密私钥,快递鸟提供,注意保管,不要泄漏 string appKey= "554343b2-7252-439b-b4eb

    1.4K30发布于 2020-03-12
  • 来自专栏个人教程

    【玩转 EdgeOne】在边缘函数实现腾讯云API 3.0签名

    但它暂时没办法安装依赖或者导入腾讯云官方SDK,在调用腾讯云API时的签名会比较麻烦。 解决办法 用JS纯手写一个API 3.0的签名函数使用 目录 给出写好的签名代码 讲解使用方法 拿获取轻量应用服务器可用区列表举例,演示如何使用(需要Demo修改的可以直接跳到这) 一、签名代码 相关的边缘函数 参考对应的API文档,注意不包含公共参数 headersPending:API请求头,参考对应的 API文档,包含公共参数 签名函数输出: 输出包含签名的请求头headers,使用该请求头直接调用API ""; const Service = ""; // 填写API的调用地址 const apiurl = ''; // 签名前的请求头,填写API调用地址的Host、 ,会输出包含签名的请求头,后续直接用这个请求头请求API const headers = await qcloud_v3_post(SecretId,SecretKey,Service,bodyString

    1.4K71编辑于 2023-11-02
  • 来自专栏用户7033182的专栏

    php 实现快递鸟API接口签名 快递查询对接代码

    使用Php开发语言调用接口,常见的问题基本上是数据签名错误导致的接口联调失败,大家在电商平台调用快递鸟接口时,为了提供对接效率,给大家提供一些复制直接用的方法。 ('AppKey', '请到快递鸟官网申请http://kdniao.com/reg'); //请求url defined('ReqURL') or define('ReqURL', 'http://api.kdniao.com { $gets.= fread($fd, 128); } fclose($fd); return $gets; } /** * 电商Sign签名生成 * @param data 内容 * @param appkey Appkey * @return DataSign签名 */ function encrypt($data, $appkey

    2K00发布于 2020-03-15
领券