别让测试脚本成了安全隐患
写测试脚本是开发流程里再平常不过的事,尤其是做接口自动化、性能压测的时候,随手写个Python脚本跑一跑,数据出来了就完事。但很多人没意识到,这些脚本如果处理不当,可能把内部接口、账号密码甚至服务器权限直接暴露出去。
敏感信息别硬编码在脚本里
最常见的问题就是把数据库密码、API密钥直接写在脚本里。比如下面这种写法:
requests.post("https://api.example.com/login", data={"username": "admin", "password": "123456abc!@#"})一旦这个脚本被提交到Git仓库,不管是内网还是外网,密钥就等于公开了。正确的做法是使用环境变量或配置文件(.env),并且把配置文件加到 .gitignore 里。
测试环境和生产环境要隔离
有些人在本地测试时顺手调用生产接口,觉得“只是读一下数据没关系”。可一旦脚本出错,比如循环发了上千次请求,轻则触发风控,重则把数据库打崩。之前有公司实习生用脚本刷订单接口做压力测试,结果把真实支付流程触发了,造成大量异常订单。
所有测试脚本必须明确指定目标环境,建议在脚本开头加上环境检查逻辑:
if ENV != "production":
run_test()
else:
raise Exception("禁止在生产环境运行此测试脚本")脚本权限要最小化
给测试账户开通权限时,很多人图省事直接给管理员角色。但测试脚本只需要读取日志或调用特定接口,完全没必要拥有删除数据或修改配置的权限。应该按“最小权限原则”分配账号,哪怕多花点时间配策略,也比事后补洞强。
日志输出要过滤敏感字段
调试时习惯性打印完整响应体,比如把登录返回的token、用户身份证号全打出来。这些日志如果被收集到ELK这类平台,又没做脱敏处理,就成了数据泄露的温床。可以在输出前做简单过滤:
safe_response = {k: v for k, v in response.items() if k not in ["token", "id_card", "phone"]}
print(safe_response)第三方库要定期检查漏洞
测试脚本常用 requests、selenium、pytest 这些库,但很多人装完就不管了。实际上这些依赖也会爆出CVE漏洞。建议在项目里加入依赖扫描工具,比如使用 pip-audit 定期检查:
pip audit发现高危漏洞及时升级,别等到被攻击了才想起来更新。
脚本也要走代码审查流程
很多人觉得“这只是一个临时测试脚本,不用走PR”。但正是这种临时脚本最容易出问题。所有脚本,无论用途多简单,只要涉及系统交互,都应该纳入版本管理,并经过至少一人 review。多一双眼睛,少一个后门。