news 2026/8/27 3:34:00

Windows部署Hermes Agent:连接飞书与本地自动化的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Windows部署Hermes Agent:连接飞书与本地自动化的完整指南

1. 项目概述:为什么要在Windows上折腾Hermes Agent?

最近在折腾自动化流程,想把一些日常的、重复性的信息处理任务给解放出来。比如,我经常需要把一些网页内容、文档数据或者群聊里的关键信息,自动整理到飞书的多维表格里,方便团队协作和数据分析。手动操作不仅耗时,还容易出错。这时候,一个能听懂指令、自动执行任务的“智能助手”就显得尤为重要。

Hermes Agent,就是这样一个角色。你可以把它理解为一个运行在你电脑上的“自动化大脑”。它能够接收来自飞书机器人的指令,然后调用你本地的能力(比如运行Python脚本、处理文件、查询数据库等)去完成任务,最后再把结果反馈回飞书。这样一来,你只需要在飞书里@机器人说句话,它就能帮你完成一系列复杂的操作,极大地提升了效率。

那么,为什么选择在Windows上安装呢?原因很简单:很多人的主力办公环境就是Windows。虽然Linux服务器可能更“专业”,但对于大多数非开发出身的运营、产品、数据分析同学来说,Windows环境更友好,上手门槛更低。本教程的目标,就是让你能在自己熟悉的Windows电脑上,从零开始,一步步把这个“自动化大脑”给搭建起来,并成功让它和飞书“牵手”。整个过程,我会结合我踩过的坑,把每一步都讲透,确保你跟着做就能成功。

2. 环境准备与前置条件检查

在开始安装Hermes Agent之前,我们需要确保你的Windows电脑已经具备了所有必要的“土壤”。这一步至关重要,很多后续的报错都源于环境没准备好。

2.1 基础运行环境:Python与Git

Hermes Agent的核心是由Python编写的,因此一个正确安装和配置的Python环境是首要条件。

Python安装与配置:我强烈推荐使用Miniconda来管理Python环境,而不是直接安装官方Python。原因在于,Miniconda可以为你创建独立的虚拟环境,避免不同项目间的包版本冲突。比如,Hermes Agent可能依赖某个特定版本的库,而你的其他项目需要另一个版本,用Conda可以完美隔离。

  1. 下载Miniconda:访问Miniconda官网,下载适用于Windows 64位的安装包。选择较新的Python 3.9或3.10版本即可,避免使用最新的3.11+,以防某些依赖包尚未兼容。
  2. 安装过程:安装时,务必勾选“Add Miniconda3 to my PATH environment variable”这个选项。虽然安装程序会警告说“不推荐”,但对于我们后续在命令行中方便地使用conda命令来说,勾选它是必须的。否则,你需要手动去系统环境变量里添加,对新手更不友好。
  3. 验证安装:安装完成后,打开一个新的“命令提示符”(CMD)或“Windows Terminal”,输入conda --versionpython --version。如果能正确显示版本号,说明安装成功。

Git安装:Git是代码版本管理工具,我们需要用它来克隆(下载)Hermes Agent的源代码。

  1. 下载Git:前往Git官网,下载Windows版本的安装程序。
  2. 安装选项:安装过程中,大部分选项保持默认即可。但在“Adjusting your PATH environment”这一步,建议选择“Git from the command line and also from 3rd-party software”。这同样是为了让Git命令在任意命令行窗口都能直接使用。
  3. 验证安装:在命令行中输入git --version,显示版本号即成功。

2.2 飞书机器人创建与配置

Hermes Agent需要和一个飞书机器人对话,因此我们必须先在飞书开放平台创建一个机器人,并获取关键的“通行证”。

  1. 进入开发者后台:打开飞书开放平台,使用你的飞书账号登录。在顶部导航栏找到“创建企业自建应用”。
  2. 创建应用:填写应用名称,例如“我的自动化助手”,应用描述按需填写。创建成功后,进入应用详情页。
  3. 获取凭证:在“凭证与基础信息”页面,你会找到App IDApp Secret。这两个字符串是机器人的唯一身份标识,非常重要,需要妥善保管(可以暂时复制到记事本)。我们后续配置会用到。
  4. 配置权限:在“权限管理”页面,为你的机器人添加必要的权限。至少需要添加:
    • im:message(接收与发送消息)
    • im:message.group_at_msg(接收群聊中@机器人的消息)
    • 如果你需要机器人访问通讯录或别的功能,按需添加。添加后,记得点击页面底部的“申请线上发布”或“版本管理与发布”,创建一个版本并申请发布。通常自用测试,审核会很快通过。
  5. 启用机器人:在“事件订阅”页面,你会看到一个“Encrypt Key”和“Verification Token”。同样记录下来。但更重要的是,在“应用功能”页面,确保“机器人”功能是开启状态。
  6. 将机器人拉入群聊:在飞书客户端,创建一个测试群(或使用已有群),在群设置中“添加机器人”,搜索你刚创建的应用名称,将其添加到群里。

至此,飞书端的准备工作就完成了。我们得到了四组关键信息:App ID,App Secret,Encrypt Key,Verification Token

3. Hermes Agent 安装与核心配置详解

有了前面的基础,我们现在可以开始安装和配置Hermes Agent本体了。这个过程分为获取代码、安装依赖、配置参数三个核心步骤。

3.1 获取源代码与创建虚拟环境

我们不推荐直接修改全局的Python环境。为Hermes Agent创建一个独立的Conda环境是最佳实践。

# 1. 创建一个新的conda环境,命名为hermes,并指定python版本为3.9 conda create -n hermes python=3.9 -y # 2. 激活这个环境 conda activate hermes # 3. 克隆Hermes Agent的代码仓库 git clone https://github.com/你的HermesAgent仓库地址.git # 注意:实际的仓库地址请以官方文档为准,这里仅为示例。 # 鉴于网络问题,如果克隆缓慢,可以尝试使用镜像源或先下载ZIP包。 # 4. 进入项目目录 cd Hermes-Agent

注意:关于Hermes Agent的官方仓库地址,请务必查阅其最新的官方文档或公告获取。由于项目可能活跃更新,使用正确的仓库是成功的第一步。

3.2 依赖安装与常见问题排雷

进入项目目录后,通常会有一个requirements.txt文件,里面列出了所有需要的Python包。

# 使用pip安装所有依赖 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

这里我使用了清华大学的镜像源-i https://pypi.tuna.tsinghua.edu.cn/simple,可以大幅加快在国内的下载速度。这是解决安装缓慢甚至失败的第一个技巧。

踩坑经验1:依赖冲突与版本地狱安装过程中,你很可能会遇到各种版本冲突报错,例如“Cannot uninstall ‘yarl’”或“Could not find a version that satisfies the requirement…”。这是Python包管理中最常见的问题。

  • 解决方案A(优先尝试):如果错误信息明确指出了某个包(比如aiohttp)的版本问题,可以尝试先单独安装一个兼容版本,再安装整体依赖。
    pip install aiohttp==3.8.4 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install -r requirements.txt --no-deps -i https://pypi.tuna.tsinghua.edu.cn/simple
    --no-deps参数表示不安装依赖的依赖,有时能绕过复杂冲突。
  • 解决方案B(终极手段):如果冲突无法解决,可以尝试使用pipenvpoetry这类更现代的依赖管理工具,它们能更好地处理依赖关系。或者,仔细查看项目的setup.pypyproject.toml文件,看是否有更明确的版本说明。

踩坑经验2:系统编译工具缺失在安装某些包含C扩展的包(如cryptography,psutil)时,可能会报错关于“Microsoft Visual C++ 14.0 or greater is required”。这是因为缺少Windows下的C++编译环境。

  • 解决方案:访问“Microsoft C++ Build Tools”页面,下载并安装“Build Tools for Visual Studio 2022”。安装时,在“工作负载”中勾选“使用C++的桌面开发”,右侧明细中确保“Windows 10/11 SDK”和“MSVC v143…”被选中。安装完成后,重启命令行再尝试安装。

3.3 核心配置文件解析与填写

Hermes Agent的配置通常通过一个配置文件(如config.yaml,.envconfig.toml)来完成。我们需要将之前从飞书获取的信息填进去。

假设配置文件是config.yaml,其核心结构如下:

# 飞书机器人配置 feishu: app_id: "你的 App ID" # 替换成你的 app_secret: "你的 App Secret" # 替换成你的 verification_token: "你的 Verification Token" # 替换成你的 encrypt_key: "你的 Encrypt Key" # 如果有则填写,没有可留空或删除此行 # 消息订阅的地址,Agent启动后会告知你,需要填回飞书后台 event_callback_url: "" # 暂时留空,启动后获取 # Agent自身配置 agent: name: "我的助手" # 本地技能(Skill)的配置,例如调用本地脚本 skills: - name: "query_data" command: ["python", "C:/scripts/query.py"] # 一个示例技能,调用本地Python脚本 # 监听的主机和端口 host: "0.0.0.0" port: 9000

关键配置项解读:

  1. feishu部分:这是与飞书通信的桥梁。app_idapp_secret是身份凭证。verification_token用于飞书服务器验证回调地址的真实性。encrypt_key用于消息加密,如果飞书后台没有启用加密,这里可以不配。
  2. event_callback_url:这是最容易出错的一步。这个地址是Hermes Agent启动后,提供给飞书服务器用于推送消息的“门牌号”。在本地开发时,这个地址不是本地localhost,而是一个公网可访问的地址。我们需要使用内网穿透工具(如ngrok,localtunnel)将本地的http://localhost:9000暴露到公网。
  3. agent.skills:这里定义了Agent具备的“技能”。每个技能对应一个本地可执行命令。当飞书机器人收到特定指令时,就会触发对应的技能。你需要根据自己想实现的功能,在这里预先定义好。

4. 内网穿透与飞书事件订阅配置

这是连接本地Agent与云端飞书的关键一步,也是新手最容易卡住的地方。

4.1 使用 ngrok 暴露本地服务

由于我们的Hermes Agent运行在个人电脑上,处于局域网或运营商NAT之后,飞书的服务器无法直接访问到localhost:9000。因此,我们需要一个“中介”,把本地端口映射到一个公网域名上。

  1. 注册并安装ngrok:访问ngrok官网,注册一个免费账户。下载Windows版本的ngrok客户端,解压得到一个ngrok.exe文件。
  2. 配置认证令牌:在ngrok网站的个人仪表板(Dashboard)找到你的Authtoken。在命令行中,进入ngrok.exe所在目录,执行:
    ngrok config add-authtoken 你的Authtoken
  3. 启动隧道:在另一个命令行窗口(保持Hermes环境那个窗口开着),运行以下命令,将本地9000端口暴露到公网:
    ngrok http 9000
    运行成功后,你会看到类似下面的输出:
    Forwarding https://a1b2c3d4.ngrok.io -> http://localhost:9000
    其中https://a1b2c3d4.ngrok.io就是你的公网临时域名。复制这个地址

4.2 完成飞书事件订阅配置

现在,我们有了公网可访问的回调地址。

  1. 拼接回调URL:Hermes Agent接收飞书事件的具体路径通常是/webhook/event。因此,完整的回调URL是:https://a1b2c3d4.ngrok.io/webhook/event
  2. 填写到飞书后台:回到飞书开放平台,进入你的应用“事件订阅”页面。
    • 在“请求地址”栏,粘贴上一步得到的完整URL。
    • 将之前记录的Verification Token填入对应栏位。
    • 如果配置了encrypt_key,也填入对应栏位。
    • 点击“保存”。
  3. 通过验证:点击保存后,飞书服务器会立即向这个地址发送一个带有特定挑战参数的GET请求,用于验证这个地址确实属于你并且能正常响应。此时,你的Hermes Agent必须已经启动并运行,它内置的路由会处理这个验证请求,并自动返回正确的响应。如果验证成功,页面会提示“保存成功”。
  4. 订阅事件:在“事件订阅”下方,找到“订阅事件”区域,添加你需要的事件。对于基础机器人功能,至少需要添加“接收消息”这个事件。保存后,可能需要再次发布应用版本。

踩坑经验3:验证失败与超时如果验证失败,常见原因有:

  • Agent未启动:确保在点击“保存”前,已经运行了Hermes Agent(步骤见下一章)。
  • ngrok隧道中断:检查ngrok命令行窗口是否正常运行,网络是否通畅。免费版ngrok域名每次启动都会变,重启后需要更新回调URL。
  • 路径错误:确认Hermes Agent监听的路径是否是/webhook/event,需要查阅其官方文档确认。
  • 防火墙/杀毒软件拦截:临时关闭Windows Defender防火墙或第三方杀毒软件试试。

5. 启动Hermes Agent与基础功能测试

当所有配置都就绪后,我们就可以启动Agent,并进行第一次对话测试了。

5.1 启动Agent服务

在激活了hermesConda环境并位于项目目录下的命令行窗口中,运行启动命令。具体命令取决于项目的设计,常见的有:

# 方式一:直接运行主Python文件 python main.py # 方式二:通过模块方式运行 python -m hermes_agent # 方式三:使用项目提供的启动脚本 ./start.sh # Linux/macOS start.bat # Windows

请以项目README文档为准。启动成功后,你应该能在控制台看到类似以下的日志:

INFO: Started server process [12345] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:9000 (Press CTRL+C to quit)

这表示Agent的Web服务已经在本地9000端口启动,并准备好接收请求。

5.2 在飞书中进行首次对话

  1. 打开你添加了机器人的飞书群。
  2. @你的机器人,发送一条简单的消息,例如:@我的自动化助手 你好@我的自动化助手 ping
  3. 观察两个地方:
    • 飞书群聊:看机器人是否回复。一个最简单的实现可能会回复“Hello from Hermes!”或“pong”。
    • Agent启动的命令行窗口:看是否有新的日志输出,例如收到了消息事件、处理了某个技能等。

如果机器人成功回复,恭喜你,最基础的连接已经打通了!

5.3 实现一个自定义技能

让机器人说“你好”只是开始,真正的威力在于自定义技能。我们来创建一个简单的技能,让机器人能执行我们本地的一个脚本。

  1. 创建技能脚本:在本地任意位置(例如C:\automation_scripts)创建一个Python文件get_time.py

    # get_time.py import datetime import json import sys def main(): # 获取当前时间 current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") # 构造返回给Agent的消息 result = { "success": True, "message": f"当前服务器时间是:{current_time}" } # 打印JSON到标准输出,Agent会捕获这个输出 print(json.dumps(result, ensure_ascii=False)) if __name__ == "__main__": main()

    这个脚本的功能很简单:获取当前时间,并以JSON格式输出。

  2. 在Agent配置中注册技能:编辑你的config.yaml文件,在agent.skills部分添加这个新技能。

    agent: skills: - name: "get_time" # 技能名称,将在飞书指令中调用 command: ["python", "C:/automation_scripts/get_time.py"] # 注意Windows路径使用正斜杠或双反斜杠 description: "获取当前系统时间" # 可选的技能描述
  3. 配置技能触发规则:Hermes Agent通常需要你定义什么样的消息触发什么技能。这可能在另一个配置文件中(如skills.yaml),或者通过装饰器在代码中定义。假设我们通过一个简单的规则文件来配置:

    # skills_rules.yaml rules: - pattern: "现在几点" # 当消息包含“现在几点”时触发 skill_name: "get_time" # 触发上面定义的get_time技能 requires_at: true # 是否需要@机器人

    你需要根据Hermes Agent的具体框架,找到配置技能路由的方法。

  4. 重启Agent并测试:修改配置后,重启Hermes Agent服务。在飞书群里向机器人发送:“@我的自动化助手 现在几点”。观察命令行日志,应该能看到它调用了get_time.py脚本,并在飞书群里回复“当前服务器时间是:2023-10-27 14:30:00”。

通过这个例子,你可以举一反三。技能脚本可以是任何能在你电脑上运行的程序:一个数据处理脚本、一个控制智能家居的指令、一个查询数据库并生成报表的程序等等。Hermes Agent充当了飞书与本地强大能力的中间人。

6. 进阶配置与运维要点

当基础功能跑通后,我们会希望它更稳定、更安全、功能更强。

6.1 使用进程守护保持Agent常驻

我们不能一直开着命令行窗口。在Windows上,我们可以使用NSSM(the Non-Sucking Service Manager) 将Hermes Agent安装为系统服务。

  1. 下载NSSM:从NSSM官网下载,解压得到nssm.exe
  2. 安装服务:以管理员身份打开命令提示符,切换到nssm所在目录。
    nssm install HermesAgent
    会弹出一个图形化配置窗口。
    • Path: 选择你的Python解释器完整路径(在Conda环境中,通常是C:\Users\<用户名>\Miniconda3\envs\hermes\python.exe)。
    • Startup directory: 选择Hermes Agent的项目根目录。
    • Arguments: 填写启动命令,例如main.py
  3. 配置服务:在“Details”页可以设置服务显示名。在“Log on”页,建议选择一个有权限的账户(如你的个人账户或专门的系统账户)。在“Dependencies”页,如果Agent依赖其他服务(如Redis),可以在这里设置。
  4. 启动服务:配置完成后,点击“Install service”。然后,你可以在Windows服务管理器中找到“HermesAgent”服务,将其启动类型设为“自动”,并立即启动它。

现在,Hermes Agent就会在后台默默运行,即使你注销用户或重启电脑(如果设置了自动启动)。

6.2 技能管理与安全边界

随着技能越来越多,管理变得重要。

  • 技能目录化:不要把所有脚本都堆在一个目录。可以按功能建立子目录,如skills/data_fetch/,skills/notification/等。在配置中引用时使用相对或绝对路径。
  • 权限最小化:运行Agent的系统服务账户,不应具有过高权限。专门创建一个普通用户来运行此服务。
  • 输入验证与过滤:在技能脚本中,务必对从飞书消息中传入的参数进行严格的验证和清洗,防止命令注入攻击。例如,如果技能是执行一个带参数的Shell命令,绝对不要直接将用户输入拼接进命令字符串。
  • 日志与审计:确保Agent和所有技能脚本都有完善的日志记录,记录谁、在什么时候、执行了什么操作、结果如何。这对于排查问题和安全审计至关重要。

6.3 性能优化与稳定性提升

  • 使用消息队列:如果技能执行耗时较长(超过几秒),不要让HTTP请求一直等待。最佳实践是,Agent接收到消息后,立即返回“已接收”,然后将任务放入一个消息队列(如Redis Streams, RabbitMQ),由后台Worker进程异步执行。执行完成后,Worker再通过飞书API主动发送消息到群聊。这能避免飞书服务器因超时而重试。
  • 配置重试机制:在网络调用或执行外部命令时,增加重试逻辑,并设置合理的超时时间。
  • 资源监控:监控运行Agent的机器的CPU、内存和磁盘使用情况。可以编写一个简单的“健康检查”技能,定期汇报这些信息到飞书群。

7. 故障排查与常见问题手册

即使按照教程一步步来,也难免会遇到问题。这里汇总了一些典型问题及其解决方法。

问题现象可能原因排查步骤与解决方案
启动Agent时提示端口被占用端口9000已被其他程序(如其他开发服务器)使用。1. 使用命令netstat -ano | findstr :9000查找占用进程的PID。
2. 在任务管理器中结束该进程,或修改Agent配置中的port为其他值(如9001),并同步更新ngrok和飞书回调URL。
飞书事件订阅验证始终失败1. Agent未运行。
2. ngrok隧道未建立或已断开。
3. 回调URL路径错误。
4. 本地防火墙/杀毒软件阻止。
1. 确认Agent进程已启动且无报错。
2. 在浏览器访问https://你的ngrok地址.ngrok.io/webhook/event,看是否有响应(可能是404,但至少不是连接失败)。
3. 检查Agent代码中处理验证请求的路由路径是否与配置一致。
4. 临时关闭防火墙测试。
机器人能收到消息但不回复1. 技能路由配置错误,消息未匹配到任何技能。
2. 技能脚本执行出错。
3. 飞书API调用权限不足或令牌失效。
1. 查看Agent日志,确认是否解析了消息并尝试调用技能。
2. 查看技能脚本的输出和错误日志。手动在命令行运行技能脚本,测试是否正常。
3. 检查飞书应用的权限是否已发布,app_secret是否正确,访问令牌是否已过期(飞书令牌通常2小时过期,Agent应实现自动续期)。
技能脚本执行超时或无响应1. 脚本本身执行时间过长。
2. 脚本陷入死循环或等待。
3. 路径错误或依赖缺失。
1. 为技能设置超时时间(如果框架支持)。
2. 手动执行脚本,观察其行为。
3. 确保在Condahermes环境下运行脚本,或脚本内部指定了正确的Python解释器。
ngrok隧道频繁断开免费版ngrok限制较多,连接不稳定。1. 考虑使用其他更稳定的内网穿透工具,如localtunnelbore
2. 如果有公网IP和路由器权限,可以配置端口转发,使用域名和SSL证书(如Let‘s Encrypt)获得永久回调地址。
3. 对于生产环境,强烈建议将Agent部署在云服务器上。
作为服务启动后无法正常工作1. 服务账户没有脚本或依赖的访问权限。
2. 工作目录或环境变量不正确。
1. 在NSSM配置中,仔细检查“Path”、“Startup directory”和“Log on”账户。
2. 尝试在“Arguments”中,使用Python的-u参数(无缓冲输出)并重定向日志到文件,便于调试:main.py > C:\hermes_log.txt 2>&1

最后,再分享一个我踩过的大坑:环境变量。当你在终端里手动运行一切正常,但做成服务后就失败,十有八九是环境变量问题(尤其是PATH)。在NSSM的“Environment”标签页下,可以手动添加需要的环境变量,比如将Conda环境的Scripts目录添加到PATH中。最稳妥的办法是在技能脚本的开头,就使用绝对路径来调用解释器和关键命令。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 3:33:27

MySQL 8.0从入门到实战:安装部署、SQL操作与常见排错指南

这次我们直接说 MySQL。它是目前互联网行业使用最广泛的开源关系型数据库&#xff0c;几乎每个做后端开发的人都要过一遍。今天这篇不是概念复述&#xff0c;而是带你把“装库、建表、写 SQL、连服务、排错误”整个链路跑通。重点放在新手真正用得上的部分&#xff1a;安装方式…

作者头像 李华
网站建设 2026/8/27 3:31:10

PW2053平芯微代理商,PWM/PFM双模式与100%占空比低压差

PW2053 同步降压调节器芯片介绍 摘要&#xff1a; PW2053是一款高效、单片式同步降压调节器&#xff0c;采用恒频电流模式架构。该芯片具有高达3A的输出电流能力&#xff0c;并支持100%占空比低dropout操作&#xff0c;非常适合单节锂离子电池供电的应用。其内部集成的功能和高…

作者头像 李华
网站建设 2026/8/27 3:30:40

eFuse电子保险丝:智能电路保护原理、选型与工程实践全解析

1. 项目概述&#xff1a;从一次“冒烟”事故说起几年前&#xff0c;我负责的一个嵌入式项目在客户现场出了状况。那是一个部署在工业环境下的数据采集终端&#xff0c;在一次雷雨天气后&#xff0c;设备彻底“变砖”&#xff0c;无法启动。现场工程师拆机检查&#xff0c;发现主…

作者头像 李华
网站建设 2026/8/27 3:30:03

Claude Design零基础入门:用对话式AI设计快速生成网页原型

这次我们来看一个对新手非常友好的 AI 设计方向&#xff1a;Claude Design。它的核心思路不是让你打开 Photoshop 或 Figma 从零开始摆画布&#xff0c;而是把“设计”这件事改写成“对话”。你描述需求&#xff0c;Claude 负责生成页面结构、布局、配色和对应代码&#xff0c;…

作者头像 李华
网站建设 2026/8/27 3:29:51

暮光时段望远镜成像劣化建模与物理约束优化

1. 这道题根本不是在测天文观测能力&#xff0c;而是在考“光与介质的博弈”看到标题里“望远镜的暮光之城因素”&#xff0c;很多人第一反应是去翻《暮光之城》小说或者查天文台选址规范——我去年带三支队伍冲认证杯D题时&#xff0c;也踩过这个坑。直到第三天凌晨两点&#…

作者头像 李华
网站建设 2026/8/27 3:28:43

SQL注入攻击原理与防御:从字符串拼接漏洞到远程API调用的安全风险

1. 从一次“意外”的API调用说起那天下午&#xff0c;我正在调试一个刚上线的用户查询功能。前端传过来一个用户名&#xff0c;后端拼接SQL去数据库里捞数据&#xff0c;一切看起来都挺正常。直到测试同事随手在输入框里敲了个admin--&#xff0c;页面返回的数据突然变成了所有…

作者头像 李华