小程序与服务端接口安全性设计

这篇具有很好参考价值的文章主要介绍了小程序与服务端接口安全性设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方案参考:

https://www.cnblogs.com/superstudy/p/15398866.html

aes算法:https://www.cnblogs.com/memphis-f/p/10109027.html

会话密钥交换

参考HTTPS握手过程,计划采取同样方式完成敏感信息会话密钥交换

  • 基础
  1. 小程序内置RSA公钥,服务端留存RSA私钥
  2. 小程序内置RSA加密算法、AES加解密算法、AES随机密钥生成算法、BASE64算法、SHA256算法
  • 会话密钥交换
  1. AES随机密钥生成算法生成会话密钥,小程序保管会话密钥
  2. RSA算法通过内置RSA公钥加密会话密钥,用于会话密钥明文传输
  3. wx.login获取loginCode作为密钥交换时的签名验证信息部分原文
  4. 对 loginCode+会话密钥 SHA256 HASH算法计算会话密钥交换握手摘要信息,用于后台验证密钥传输是否安全
  5. 拼接会话密钥交换握手信息,格式为
  6. loginCode|sha256(loginCode+会话密钥)
  7. 采用会话密钥加密握手信息,格式为
  8. aes(握手信息)
  9. 组装会话密钥交换报文,与后台通讯交互进行密钥交换,格式为:
  10. {"client_hello":"握手信息", "secret":"rsa加密完的会话密钥"}
  11. 后台接受报文,解析报文,并验证会话密钥交换是否有效,验证方式如下:

a. 后台应用内置RSA私钥解密获取会话密钥明文

b. 通过会话密钥解密握手信息获取握手明文

c. 对解密完成的明文进行校验签名信息是否正确,获取明文窜loginCode及会话密钥通过sha256计算签名信息,判断是否与客户端上送一致

d. 一致情况下对loginCode与微信服务端进行转换,调用服务端API auth.code2Session 接口校验loginCode是否有效

e. 会话密钥校验成功,后台生成会话标识,用于后续敏感信息传输时标识会话信息

会话密钥交换方案实现:

  • 小程序端报文模拟构造:
  • 小程序与服务端接口安全性设计,密码学,java,安全架构,设计规范,小程序

日志打印如下:

小程序与服务端接口安全性设计,密码学,java,安全架构,设计规范,小程序

模拟小程序请求报文:

loginCode:021SSf000FCFOM1cm7300M8fr81SSf0w

会话密钥明文:1A15CB888E9F69D4B44F5871DCEFD83F

c30b457e25a599893ed73028b978cbf0300b7fdc23865da18ed0d01d74cc4ed7

握手信息明文:021SSf000FCFOM1cm7300M8fr81SSf0w|c30b457e25a599893ed73028b978cbf0300b7fdc23865da18ed0d01d74cc4ed7

aes加密(握手信息):31c42e872d7e8c1131188ae2619a3cee047aa7b8dd10da8936d994496a8e7e9702626c06c6fa24a891b847ba5870a0979dda0e1a4ad22ad627b4416f8b83dae18e9c7225dfea32fb67d147f2fb9edf681c94526c9bb2e0221019041a1aa754dde17b27e9bbfb5b8045e426cb0ed04510

rsa公钥加密(会话密钥):Gl+4vqpw6ptUM326IMIhdiTUWP/ghHq1QOJPGpXJWTZhI+NlrudabzdlG6I+oDWl3FGI1D/gY0zOv/uPhcN/7YBPIkf0M96gwF2h3qgsHQ8J4Q5n0qOHdw2iGtcaSy6E8DdejzqpC1E2/G0K0B7qO2laFrMxygun5Jf5nmOhAA0=

模拟构造的小程序请求报文:

{

"client_hello": "31c42e872d7e8c1131188ae2619a3cee047aa7b8dd10da8936d994496a8e7e9702626c06c6fa24a891b847ba5870a0979dda0e1a4ad22ad627b4416f8b83dae18e9c7225dfea32fb67d147f2fb9edf681c94526c9bb2e0221019041a1aa754dde17b27e9bbfb5b8045e426cb0ed04510",

"secret": "Gl+4vqpw6ptUM326IMIhdiTUWP/ghHq1QOJPGpXJWTZhI+NlrudabzdlG6I+oDWl3FGI1D/gY0zOv/uPhcN/7YBPIkf0M96gwF2h3qgsHQ8J4Q5n0qOHdw2iGtcaSy6E8DdejzqpC1E2/G0K0B7qO2laFrMxygun5Jf5nmOhAA0="

}

  • 服务端代码:
  • 小程序与服务端接口安全性设计,密码学,java,安全架构,设计规范,小程序
  • 测试结果:

使用模拟构造的小程序请求报文请求服务端接口,成功返回会话标识sessionid(会话标识即当前用户身份信息)

小程序与服务端接口安全性设计,密码学,java,安全架构,设计规范,小程序

安全接口设计

通过上述会话密钥交换机制,完成了安全接口的基础保障

在具备会话密钥后,设计安全接口交互保障敏感信息,设计流程如下:

a. 前端生成交易明文 json_data

b. 组织安全接口报文,包含要素:

  • 会话标识 s_session_key 来源为密钥交换成功后服务端响应给客户端的会话标识
  • 交易时间戳 s_time_stamp
  • 交易数据密文 s_data 来源为 aes(json_data) aes加密密钥为会话密钥
  • 交易报文摘要 s_mac 来源为 sha256(会话密钥+json_data+s_time_stamp)

c. 后台报文解密及验证,验证流程如下:

根据s_session_key获取会话密钥 --> 解密s_data获取交易明文 --> 服务端计算 s_mac_server (获取服务段留存会话密钥及报文时间戳,按照前端算法及明文拼接方式一致计算) --> 比对计算结果

  • 设计分析

通过敏感信息会话密钥机制,可以保护交易敏感数据不被泄露,分析如下:

  1. 内置RSA公钥,客户端仅包含RSA公钥,在会话密钥交换过程成只有服务端留存有RSA私钥,故即使抓包,会话密钥也无法被截取
  2. 采用微信loginCode作为会话密钥交换时的验证因子,这样后台会话密钥交换成功时通过loginCode与微信后台进行接口交互,
  3. 确保会话交互时是通过小程序官方生成的会话,通过微信接口获取到OpenId留存会话,用于后续会话权限控制使用
  4. s_session_key会话标识后台未采用随机算法生成,通过 sha256(UUID+会话密钥) 保证不可预知

安全接口设计方案实现:

  • 小程序端报文模拟构造:

现在通过某个接口实现加密传输。aes加密接口报文,会话标识作为aes加密的密钥。文章来源地址https://www.toymoban.com/news/detail-773919.html

/**
 * post 请求
 *
 * header传参:
 * s_time_stamp  请求时间戳
 * sessionid  会话标识  用户唯一标识
 * s_mac   签名    服务端用于验签
 *
 *body体传参  json格式
 *
 * {  "s_data": "Gl+4vqpw6ptUM326IMIhdiTHdw2iGtcaSn5Jf5nmOhAA0=" }
 *
 */

到了这里,关于小程序与服务端接口安全性设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • web系统设计安全性基本要求

    身份鉴别 独立的登录模块:为社会用户和平台运营管理用户提供独立的登录地址、登录界面和身份认证模块,通过防火墙等设备严格限制能够登录WEB应用的用户地址、身份; 双因素认证: 平台运营管理人员:采用用户名/口令+数字证书方式进行身份鉴别; 商户:采用用户名

    2024年01月24日
    浏览(48)
  • 面试题 -- 客户端安全性和框架设计

    1) 网络数据传输(敏感数据[账号密码消费数据银行卡账号],不能明文发送) 2) 协议的问题(自定义协议) 2) 本地文件存储(游戏的存档) 3) 源代码(混淆) 1) SIP(Session Initiation Protocol),会话发起协议 2) SIP 是建立VOIP连接的IETF标准,IETF是全球互联网最具权威的技

    2024年02月15日
    浏览(43)
  • 为独立服务器增加安全性的简单步骤

    为独立服务器增加安全性的简单步骤 马上注册成为ROSABC会员,随时发帖回复。 您需要 登录 才可以下载或查看,没有账号?会员注册  x 独立服务器是您业务的中心,它需要尽可能的安全。对企业中心的攻击可能会导致您失去知识产权,可能会让您损失大量资金,并且总是难

    2024年02月14日
    浏览(43)
  • 服务器安全性漏洞和常见攻击方式解析

    服务器安全性是当今互联网信息安全的重要组成部分。在网络安全领域中,常见的威胁之-就是服务器安全性漏洞。本文将深入探讨服务器安全性漏洞的本质,并分析常见的攻击方式并提供一些建议以加强服务器的安全性。 一、服务器安全性漏洞的本质 服务器安全性漏洞指的

    2024年01月17日
    浏览(45)
  • PHP+SQL考勤系统安全性的设计与实现

    第一章 概 述 1.1  PHP的概念 PHP: Hypertext Preprocessor ( 超文本预处理器 ) 的缩写,它是一种服务器端的 HTML 脚本 / 编程语言 , 是一种简单的、 面向对象 的、解释型的、健壮的、安全的、性能非常之高的、独立于架构的、可移植的、动态的脚本语言

    2023年04月08日
    浏览(74)
  • Istio 探索:微服务的流量管理、安全性和策略加固

    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack : 📚 MERN/MEAN/MEVN Stack | 🌐 Jamstack | 🌍 GraphQL | 🔁 RESTful API | ⚡ WebSockets | 🔄 CI/CD | 🌐 Git Version Control | 🔧 DevOps 🌐 前端技术 Frontend : 🖋️ HTML CSS |

    2024年02月09日
    浏览(42)
  • 阿里云国际站:阿里云服务器安全性如何?有哪些安全措施和防护机制?

    阿里云国际站:阿里云服务器安全性如何?有哪些安全措施和防护机制? 阿里云服务器安全性简介 作为全球领先的云计算服务提供商,阿里云始终注重保障用户数据安全。在面对各种网络攻击和安全威胁时,阿里云积极构建完善的安全体系,为用户提供专业、可靠的安全防

    2024年02月10日
    浏览(51)
  • 《安全地扩展您的应用程序功能:了解API的安全性优势》

    在构建和维护应用程序时,安全性始终是开发者和企业的重中之重。随着应用程序功能的不断扩展,确保数据的安全和用户的隐私保护变得愈加复杂。API(应用程序编程接口)作为连接不同服务和数据的桥梁,其安全性对于防止数据泄露和其他安全威胁至关重要。在本文中,

    2024年02月21日
    浏览(49)
  • Java应用服务系统安全性,签名和验签浅析

    随着互联网的普及,分布式服务部署越来越流行,服务之间通信的安全性也是越来越值得关注。这里,笔者把应用与服务之间通信时,进行的的安全性相关, 加签 与 验签 ,进行了一个简单的记录。 网关服务接口,暴漏在公网,被非法调用? 增加了token安全验证,被抓包等

    2024年02月13日
    浏览(41)
  • Ubuntu服务器安全性提升:修改SSH默认端口号

    在Ubuntu服务器上,SSH(Secure Shell)是一种至关重要的远程连接工具。它提供了一种安全的方式来远程连接和管理计算机系统,通过加密通信来确保数据的保密性和完整性。SSH协议广泛用于计算机网络中,用于远程管理、文件传输和安全通信等任务。然而,SSH默认使用的端口号

    2024年02月08日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包