前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口开发安全问题

接口开发安全问题

作者头像
hedeqiang
发布2019-12-17 22:19:23
6590
发布2019-12-17 22:19:23
举报
文章被收录于专栏:LaravelCodeLaravelCode

接口开发安全问题

公司业务扩展需要,需对外提供接口给其他第三方系统使用。很多人说是系统并不安全,缺乏安全考虑。所以抽出时间思考整理了一番

采用认证 + 签名验证的方式来进行传输

认证 : (认证方式为: Oauth2) 其他外部系统调用垂直系统接口需通过垂直系统提供的指定账号密码进行登录,获取秘钥。

代码语言:javascript
复制
Authorization:Bearer y3XWtwWaxqCEBDoE-qzZk0bCp3UKO920

签名验证 满足第一步条件,方可进行签名验证。

签名所需参数:

  • 秘钥(垂直系统提供)
  • token (令牌 登录可获取)
  • timestamp (时间戳)
  • 以及其他参数
  • sign 签名

签名生成步骤:

第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名 ASCII 码从小到大排序(字典序),使用 URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 特别注意以下重要规则:

参数名 ASCII 码从小到大排序(字典序);

如果参数的值为空不参与签名;

参数名区分大小写;

验证调用返回或微信主动通知签名时,传送的 sign 参数不参与签名,将生成的签名与该sign值作校验。

第二步,在stringA最后拼接上 key 得到 stringSignTemp 字符串,并对 stringSignTemp进行 MD5 运算,再将得到的字符串所有字符转换为大写,得到 sign 值 signValue。 签名算法与微信一致。上方一些内容来自微信开发文档

IP白名单,第三方需要联调需提供外网机器IP地址 说了这么多,本身也不确定此方案可不可行,但是应该也差不多吧。另外对于特别铭感信息.需采用 HTTPS 协议进行传输

具体实现就是接下来的问题了,下一章节,(采用 Yii2.0)进行详细描述。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 接口开发安全问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档