Charles抓包工具系列文章(六)-- Block List 和 Allow List (黑白名单)

news2024/11/19 0:46:51

一、背景

Allow List 是白名单,请求的接口如果在白名单里,就被允许。

Block List 是黑名单,请求的接口如果在黑名单里,就被拒绝。

黑白名单是可以一起启用的,优先黑名单。

二、白名单 Allow List

在这里插入图片描述

1、新增白名单接口

在这里插入图片描述

处理动作可以是Drop connection, 也可以是Return 403 response。

在这里插入图片描述

在这里插入图片描述

2、验证结果

请求的接口不在白名单里,报错见下:
在这里插入图片描述

上面设置的是Drop connection,,如果白名单处理的动作换成Return 403 response,报错将变成如下:
在这里插入图片描述

三、黑名单 Block List

在这里插入图片描述

1、新增黑名单

在这里插入图片描述
在这里插入图片描述
接下来,我们将访问接口http://192.168.10.19:9039/api/v1/work/workId/1/detail。

2、验证结果

在这里插入图片描述

四、总结

黑名单启用的情况下,白名单也启用,访问某个接口,会发生什么呢?

这里把测试验证结果总结一下:

匹配白名单匹配黑名单结果
黑名单生效,Tags = Block List,请求被拒
请求正常
白名单生效,Tags = Allow List,请求被拒
黑名单生效,Tags = Block List (同只匹配黑名单一样),请求被拒

所以它的逻辑是:

先判断是否匹配黑名单,如果请求接口在黑名单里,则请求被拒。

再判断是否匹配白名单,如果不在白名单里,则请求也被拒;反之,请求正常通过。

1、实现自己的黑白名单

在日常编程中,我们也会需要或这或那的黑白名单。

比如用户ID、学校ID、IP地址、设备编号等, 以此实现不同粒度的黑白名单。

建议你也像这样配置两个名单,黑名单和白名单,黑名单优先于白名单。

再加上黑白名单的开关变量。

如此设计,适应灵活的业务需求变化。

2、伪代码

 Integer schoolId

// 黑名单
if (commonConfig.getEnabledBlack()) {
     if (StringUtils.isNotEmpty(schoolIdBlackList) && schoolIdBlackList.contains(schoolId.toString())) {
        // 在黑名单里, 返回报错
         throw new BizException("学校在黑名单里");
     }
 }

// 白名单
if (commonConfig.getEnabledWhite()) {
     if (StringUtils.isEmpty(schoolIdWhiteList)) {
         throw new BizException("学校不在白名单里");
     }
     if (!schoolIdWhiteList.contains(schoolId.toString())) {
        // 不在白名单里, 返回报错
         throw new BizException("学校不在白名单里");
     }
 } 

附录

Charles抓包工具系列文章(一)-- Compose 拼接http请求
Charles抓包工具系列文章(二)-- Repeat 回放http请求
Charles抓包工具系列文章(三)-- 接口映射工具(Map Remote和Map Local)
Charles抓包工具系列文章(四)-- Rewrite 重写工具
Charles抓包工具系列文章(五)-- DNS spoofing (DNS域名伪装)
Charles抓包工具系列文章(六)-- Block List 和 Allow List (黑白名单)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1863924.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

201.回溯算法:全排列(力扣)

class Solution { public:vector<int> res; // 用于存储当前排列组合vector<vector<int>> result; // 用于存储所有的排列组合void backtracing(vector<int>& nums, vector<bool>& used) {// 如果当前排列组合的长度等于 nums 的长度&am…

HDOJ5616 Jam‘s balance

目录 HDOJ5616 Jams balance题目描述背景输入输出 题解解法一解法二优化 打赏 HDOJ5616 Jam’s balance 题目描述 背景 有 N N N个已知质量的砝码&#xff0c;分别询问给出的 M M M个质量能否被称出 输入 第一行输入一个变量 T T T&#xff0c;表示有 T T T组数据&#xf…

二轮平衡车直立控制VREP仿真及python上位机监控实现基础环境

目录 1.引言2. 实验流程2.1. V-REP环境搭建2.2. 电机和部件建模 3.控制策略描述3.1. PID控制3. 2. 控制参数调整 4.代码结构5.结论配套环境和源代码PS.扩展阅读ps1.六自由度机器人相关文章资源ps2.四轴机器相关文章资源ps3.移动小车相关文章资源 1.引言 在机器人学和自动化领域…

东南亚本地化游戏

通常&#xff0c;亚洲电子游戏市场首先与中国联系在一起。但最近&#xff0c;分析人士越来越关注一个邻近地区&#xff1a;东南亚。而且有充分的理由。 该地区包括中南半岛、马来群岛和邻近岛屿上的十一个国家。1967年&#xff0c;其中10个国家&#xff08;除东帝汶外&#xf…

.NET C# 使用GDAL将mdb转换gdb数据

.NET C# 使用GDAL将mdb转换gdb数据 目录 .NET C# 使用GDAL将mdb转换gdb数据1 环境2 Nuget3 Code 1 环境 VisualStudio2022 .NET6 GDAL 3.8.5 2 Nuget 3 Code FeatureExtension.cs public static class FeatureExtension {[DllImport("gdal.dll", EntryPoint &…

各大广告商竞相厮杀下,诞生了一个偏门的副业方式

前段时间&#xff0c;想买摩托车&#xff0c;但是媳妇不让买&#xff0c;所以我打算偷偷买&#xff0c;然后萌生了去摆摊赚钱的想法&#xff0c;但是还没有实施就在网上接触到了“某赚”APP&#xff0c;于是一发不可收拾&#xff0c;用我的话来说&#xff0c;我做的不是副业&am…

从一万英尺外看libevent(源码刨析)

从一万英尺外看libevent 温馨提示&#xff1a;阅读时间大概二十分钟 前言 Libevent是用于编写高速可移植非阻塞IO应用的库&#xff0c;其设计目标是&#xff1a; 可移植性&#xff1a;使用libevent编写的程序应该可以在libevent支持的所有平台上工作。即使没有好的方式进行非…

多业态、多品牌企业,如何实现积分通积通兑?(附大会员方案)

2021年&#xff0c;龙湖升级珑珠为全业态通用积分&#xff0c;招商荟深度接入招商蛇口大会员体系建设&#xff1b;2022年&#xff0c;华润置地大会员“万象星”正式上线&#xff1b;2023年&#xff0c;“蒙牛生活家会员中心”全新上线…… 越来越多地产、零售等行业的集团品牌…

【学习】如何利用Python技术进行软件测试相关工作

Python是一种广泛使用的高级编程语言&#xff0c;它因其简洁的语法、强大的库支持和跨平台特性而受到开发者的喜爱。在软件测试领域&#xff0c;Python同样发挥着重要作用&#xff0c;它可以帮助测试人员编写自动化测试脚本、进行接口测试、性能测试、以及处理测试数据等。以下…

迅为RK3588开发板支持LVDS信号,标准 HDMI信号,IMIPI信号

性能强--iTOP-3588开发板采用瑞芯微RK3588处理器&#xff0c;是全新一代ALoT高端应用芯片&#xff0c;采用8nm LP制程&#xff0c;搭载八核64位CPU&#xff0c;四核Cortex-A76和四核Cortex-A55架构&#xff0c;主频高达2.4GHZ&#xff0c;8GB内存&#xff0c;32GB EMMC。 四核心…

2024第十三届中国PMO大会主持人介绍

全国PMO专业人士年度盛会 由PMO评论主办的2024第十三届中国PMO大会邀请了到十几位知名企业的PMO和项目管理专家来担任大会主持人。大会将于6月29-30日在北京举办&#xff0c;敬请关注&#xff01; 主持人介绍 肖杨&#xff0c;国际知名组织级项目管理专家&#xff0c;微薄之力…

[深度学习] 自编码器Autoencoder

自编码器&#xff08;Autoencoder&#xff09;是一种无监督学习算法&#xff0c;主要用于数据的降维、特征提取和数据重建。自编码器由两个主要部分组成&#xff1a;编码器&#xff08;Encoder&#xff09;和解码器&#xff08;Decoder&#xff09;。其基本思想是将输入数据映射…

软考《信息系统运行管理员》-1.2信息系统运维

1.2信息系统运维 传统运维模式&#xff08;软件&#xff09; 泛化&#xff1a;软件交付后围绕其所做的任何工作纠错&#xff1a;软件运行中错误的发现和改正适应&#xff1a;为适应环境做出的改变用户支持&#xff1a;为软件用户提供的支持 新的不同视角下的运维 “管理”的…

【八股系列】Vue中的<keep-alive>组件:深入解析与实践指南

&#x1f389; 博客主页&#xff1a;【剑九 六千里-CSDN博客】 &#x1f3a8; 上一篇文章&#xff1a;【探索响应式布局的奥秘&#xff1a;关键技术与实战代码示例】 &#x1f3a0; 系列专栏&#xff1a;【面试题-八股系列】 &#x1f496; 感谢大家点赞&#x1f44d;收藏⭐评论…

三、用户中心项目笔记----后端多环境实战+原始部署

后端多环境主要是修改&#xff1a; 依赖的环境地址 数据库地址 缓存地址 消息队列地址 项目端口号 服务器配置 后端怎么去区分不同的环境&#xff1f; 我们后端的SpringBoot项目&#xff0c;通过application.yml添加不同后缀来区分配置文件 application.yml就是公共的配置&a…

NeRF从入门到放弃6:两种OpenCV去畸变模型

针孔相机和鱼眼相机的去畸变模型是不一样的。 针孔相机的畸变参数有12个&#xff0c;k1~k6是径向畸变参数&#xff0c;p1 p2是切向畸变&#xff0c;s1s4&#xff1b;而鱼眼相机是等距模型&#xff0c;畸变参数只有4个k1k4。 针孔相机 畸变分为径向畸变和切向畸变。 把相机平…

链式结构二叉树练习

一.二叉树的前序遍历 想要输出所给值&#xff0c;就要先用数组将数据存储起来&#xff0c;所以这里我们单独创建一个前序遍历函数&#xff0c;将所要数据前序遍历并放入数组&#xff0c;代码如下&#xff1a; void preOrder(struct TreeNode* root, int* a, int* pi)//前序遍历…

新鲜出炉的信息化一机两用方案

在信息化日益发展的今天&#xff0c;网络安全问题愈发凸显其重要性。尤其是在政府和企事业单位中&#xff0c;如何在保证业务流畅和工作效率的同时&#xff0c;确保信息高安全性&#xff0c;成为了一个亟待解决的问题。而“一机两用”政策&#xff0c;正是针对这一需求而提出的…

如何理解:业务架构、应用架构、数据架构、技术架构与系统和复杂度

关于系统的理解 1.1 系统的概述 随着人类社会的发展&#xff0c;人们面对越来越多的规模巨大、关系复杂、参数众多地复杂问题&#xff0c;这些问题的复杂度已经远远超出人类的理解能力&#xff0c;系统论就是为了分析和解决这些问题而生。我们平时接触的计算机系统包括软件系统…

C语言 | 文件操作(下)【必收藏】

文件操作&#xff08;下&#xff09; 5、文件的顺序读写5.1 顺序读写函数介绍5.1.1 fputc与fgetc5.1.2 fputs与fgets5.1.3 fprintf与fscanf5.1.4 fread与fwrite 5.2 对比一组函数 6. 文件的随机读写6.1 fseek6.2 ftell6.3 rewind 7. 文件读取结束的判定7.1 被错误使用的feof 8.…