基础服务
【未分类】
备忘的一些链接
图床列表 - imgtu
【目录】生活&其它
游戏修改器-nes游戏修改记录
尝试操作系统-Community20.3
哈哈哈
警世恒言/人生谎言
使用视频采集卡让笔记本当nuc的屏幕
【已废弃】获取微信好友-itchat
获取微信好友-pc hook
易混词语(尽量避免使用)
有用的链接(工具)
zy服务版本记录
注意安全、生命、健康
日文输入法
安卓模拟器中使用微信充值微信豆
备忘小技巧
excel
网站生成
静态网站生成工具-vuepress
静态网站生成工具-hugo
【目录】代码片段
动态显示select的option列表
同时显示汉字和拼音
常用java代码
性能
jmeter
jmeter-性能
ops
kubernetes
jenkins
drone
服务升级记录
mrdoc升级记录
mysql升级记录
方案
跨语言的web服务间接口调用安全问题
【其它编程语言】
编程-javascript
编程-python
前端框架-react
编程-golang
c语言
.NET(dotnet)
【前端】
Lua简明教程
【缓存】redis
redis
服务搭建
搭建mrdoc
主机服务及端口列表
安装centos7虚拟机
docker
虚拟机-vagrant和virtualbox
安装AlpineLinux虚拟机
docker machine
docker-swarm
配置https域名
centos7服务器清理磁盘空间
vscode
multipass
ubuntu 使用
【数据库】mysql
mysql命令
mysql
HashDatabaseAndTableTest.java
mysql-快速导入100w条记录
mysql高级命令
用于排查问题的一些常见命令
基础信息
mysql5.7升级到8
maven相关
maven命令行汇总
自动升级maven工程中的项目版本
maven基础及高级
windows系统使用
windows客户端软件使用
windows 宿主机 + virtualbox虚拟机共同使用
windows常见问题记录
新的开发环境
windows11配置
windows系统下载
命令行安装软件 & 配置软件
折腾谷歌浏览器
浏览器插件列表
windows音频视频下载工具
云服务
服务-tao-道
【目录】技术分享
技术分享-todo
【目录】shell
windows常用命令
shell脚本汇总
shell命令汇总
windows常用脚本
命令行操作录制工具 asciinema-player
windows软件包管理器scoop
网络相关
服务使用
nexus
jenkins
apifox
notify (bark-server)
开发人员相关
IDEA相关配置
压力测试工具-jmeter
【目录】git集合
git常用操作
gitlab替代品:gitea搭建及简单使用
【git神技】git配置多个提交账户
【git神技】git别名使用
【git神技】一个本地仓库同时提交到github/gitlab/gitee等多个代码平台
gitlab使用记录
git问题汇总
git-for-windows配置
用过的jdk版本
内网穿透-通过公网ip访问本地web服务
常见问题的排查及工具
本文档使用 MrDoc 发布
-
+
首页
跨语言的web服务间接口调用安全问题
## 背景 有一个java应用需要访问python web应用。需要定制一套http调用安全方案,避免数据在传输过程中裸奔。 ## 解决步骤 ### 请求方身份是否合法 a服务要调用b服务,b需要知道a是谁,此处可以使用token/access_token来处理,b服务中配置指定的token,若没有token则拒绝请求,`a服务的每个请求都要带token`。 ### 请求参数是否被篡改 签名,将指定数据进行签名并md5,得到一个sign值,该值和token并列传输。b服务接收到后先生成并校验sign是否一致。不一致则拒绝请求。 请求携带了token和业务数据,业务数据可以使用aes/rsa加密,可以使用token的全部或部分数据参与加密。 ### 重放攻击 sign签名参数虽然解决了请求参数被篡改的隐患,但是还存在着重复使用请求参数多次请求的风险。 #### 时间戳参数 引入timestamp参数,保证接口仅在一定时间如(1分钟)内有效,需要和客户端时间保持一致。 #### 唯一请求id 请求方携带唯一id,b服务处理前先检查是否存在缓存中,存在则拒绝处理,处理该请求后将该唯一id存放到缓存中一段时间(如一天或1小时)。 > 此方案会占用额外资源(缓存服务)。 #### 设置ip白名单 + 限流 请求方的ip不在白名单中,则直接拒绝服务。 限制请求方每秒可以请求的次数(如100)。 > 此方案比`唯一请求id`更合理。 ## 代码 ### java版 - md5工具类/rsa工具类 ### python版 - md5工具类/rsa工具类 ### 请求参数规范 - 服务端只提供POST请求(Content-Type: application/json),听起来不合理,但对客户方和服务方都很方便。 - url请求参数中携带安全参数(token, sign, timestamp) - 请求体参数示例 `{"sdata": "xxxx"}` - sdata -> Secret Data
我是张三
2024年10月19日 17:46
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
eblog
Markdown文件
分享
链接
类型
密码
更新密码