我用 TraeWork 排查了项目全部安全漏洞——一个不懂安全的运维,怎么守住数据底线

我用 TraeWork 对自己开发的小程序做了一次从头到尾的安全排查,查出多个高危漏洞并全部修复——我是个不懂安全的运维,这件事以前想都不敢想。


我是谁 & 遇到什么问题

我是阿远,基层运维一线人员,不是程序员。

前段时间我用 TraeWork 做了个微信小程序"定点随行"——给一线外勤运维兄弟用的点位标记和导航工具。小程序跑起来之后我挺高兴,功能都正常,界面也顺手,准备部署上线了。

但上线前一天晚上,我躺在床上突然想到一个问题:这个小程序存的是现场设备的位置数据,用户账号、群组信息、卡密全在里面。我编程基础约等于零,我怎么知道这东西安全不安全?

越想越慌:

  • 我连"SQL注入"是什么都是听 TraeWork 说的,我哪知道我的代码有没有这个问题?
  • 那40多个API接口,每个都要登录才能调吗?会不会有的忘加鉴权了?
  • 腾讯地图的Key写在前端代码里,别人会不会扒出来盗用?
  • 用户密码我怎么存的来着?好像……是明文?

我不是不想查,是我根本不知道该查什么。 让我去看安全教程?看不懂。让我去请安全工程师?我一个基层运维,哪有这个资源。

那天晚上我决定:让 TraeWork 帮我查。


我用了 TraeWork 解决了这件事

模式: :check_box_with_check: Work ☐ Code ☐ Design

我看到有同行用 TraeWork 做代码功能审计,那是专业开发者的玩法。我这边角度不一样——我是个不懂安全的运维,我关心的是另一个问题:这东西上线后会不会被人攻击。

我用的就是 TraeWork 的代码理解 + 安全分析能力。具体就一句话——把项目代码交给它,让它扮成安全审计工程师,从头到尾帮我查。

我不懂安全,但我懂怎么把自己的担心讲清楚。我告诉它项目用了什么技术、登录怎么做的、地图Key放在哪了,然后把我担心的几个点一条条列出来,让它挨个查。

它查完给我返回了一张表,按风险等级排好了序。看到结果我后背发凉——有好几个接口,任何人不用登录就能直接调,等于大门敞开着。

具体来说,TraeWork 帮我查出了这些问题并全部修复:

风险等级 问题 我的感受
高危 几个API接口没有任何鉴权,任何人不用登录就能调——查用户数据、删位置、改群组信息 吓出一身冷汗
高危 用户密码明文存储,数据库一泄露全员密码裸奔 后背发凉
中危 腾讯地图Key暴露在前端代码里,别人扒一下就能盗用 亏没上线
中危 部分数据库操作没用参数化查询,存在SQL注入风险 这个词都是它教我的
低危 管理后台没强制Token校验,理论上可以绕过登录直接访问 越想越怕

修复方案 TraeWork 也一并给了,不是光指出问题。每个问题都配了修复代码,我把鉴权逻辑抽成了公共中间件,新接口不会再漏加了。


我做出了什么

一份完整的安全审计报告 + 全部漏洞修复。具体修了这些:

  • 所有数据库操作统一改成 PDO 参数化查询,从根上杜绝SQL注入
  • 每个API接口加了鉴权中间件,进来先过鉴权,普通用户调不了管理接口
  • 腾讯地图Key只存后端配置文件,前端代码里完全找不到,接口调用全走后端代理
  • 用户密码改成哈希存储,密码重置需要旧密码验证
  • 管理后台强制Token校验,没登录直接拒绝访问
  • 全站配了HTTPS,别人没法在半路截数据

从"不知道安不安全"到"所有问题全部排查修复",一个晚上搞定。 如果让我自己来,这事儿根本做不了——不是时间问题,是我连该查什么都不知道。


效果展示

这是 TraeWork 帮我做安全审计时的对话过程,可以看到它在逐一分析每个风险点并给出修复方案:

小程序最终安全上线,目前稳定运行中:


经验 & 技巧总结

  1. 功能跑通 ≠ 安全没问题。 这是最重要的一条。我差点带着好几个高危漏洞上线了。不管你用AI工具做了多酷的东西,上线前一定单独做一轮安全排查。

  2. 不懂安全没关系,把项目信息讲清楚就行。 我不知道SQL注入具体怎么防,但我知道告诉TraeWork:“技术栈是PHP+MySQL,认证是自研Token,地图Key存在前端。” 它自己就知道该查什么。

  3. 把担心的点一条条列出来,别只说"帮我查安全"。 只说"查安全"它会泛泛而谈。我把自己担心的几个点列出来——接口有没有忘加登录验证、密码存得对不对、Key会不会被扒走——它会逐条查,还会主动查我没想到的问题。

  4. 让它按风险等级排序输出。 修复要有优先级。高危先修,低危后排。TraeWork排好的优先级清单直接照着做就行。

  5. 鉴权逻辑要抽成公共中间件。 别每个接口单独加,容易漏。抽成公共模块,新接口自动走鉴权,从机制上杜绝遗漏。这一点也是TraeWork主动建议的。


提示词参考

说实话,那晚我第一句话根本不是什么专业模板。 我就是把自己的担心原原本本说了出来:

那晚真实的提问(大白话版)

我做了个微信小程序准备上线,但我编程基础很差,想让你帮我看看有没有安全问题。
具体情况:
- 前端是微信小程序,后端是PHP+MySQL
- 用户登录后会给一个Token,7天过期
- 用了腾讯地图,Key我写在前端代码里了
- 用户密码我好像是直接存数据库的

我就想知道:
1. 有没有什么接口是不用登录就能随便调的?我怕有的接口忘加验证了
2. 用户密码这么存行不行?要不要加密?
3. 地图Key放在前端会不会被人扒走?
4. 还有没有别的问题是我没想到的?

你帮我挨个查一遍,有问题的地方直接给我改好的代码。

就这么几句话,TraeWork 就开始逐条排查了。 它返回的比我问的还全——我没想到的SQL注入它也查了,鉴权缺失的接口它也标出来了。


后来复盘整理的通用模板

后来我复盘的时候,把那次提问整理成了一个稍微规范点的模板,方便以后别的项目也能用。但你看得出来,核心还是大白话——把你知道的项目情况说清楚,把你的担心列出来,就行了。

我有一个项目准备上线,请帮我做一次安全检查。

项目情况:
- 前端:【微信小程序】
- 后端:【PHP + MySQL】
- 登录方式:【自研Token,7天有效】
- 用到的第三方服务:【腾讯地图API】
- 部署环境:【Linux服务器,准备上HTTPS】

请帮我查这几个方面:
1. 有没有接口是不要登录就能调的?逐个检查一下
2. 密码存储方式安不安全?要不要改?
3. 第三方服务的密钥有没有暴露在前端代码里?
4. 数据库操作有没有SQL注入的风险?
5. 还有没有别的安全问题是我可能忽略的?

每个问题告诉我:严不严重、在哪个文件、怎么改,直接给我改好的代码。
最后按严重程度排个序,我先修最要紧的。

为什么这样写而不是写专业术语: 因为我真不懂那些术语。什么"水平越权"“重放攻击”,我写不出来,写出来也不是我的风格。但你用大白话把项目情况和担心说清楚,TraeWork 照样能帮你查全。提示词不需要专业,需要的是把信息交代清楚。