知识卡片

给不安全API判类型实现渐进式退场

普通读书笔记卡 · 1457.a

内容

给历史遗留的不安全函数(如接受裸字符串的SQL查询接口)新增一个只接受安全类型参数的重载版本,给存量调用点标注注解,再引入Git hooks阻止增量代码继续使用字符串类型重载,或用可见性白名单限制不安全API只能经安全团队审批调用。存量不安全调用被冻结不再增长,新代码被迫走安全路径。随项目活跃开发,安全调用比例会自然向安全API收拢,直到旧调用少到可人工清理,代码从设计机制上彻底摆脱这类漏洞。

参考来源

- 位置:《Google系统架构解密:构建安全可靠的系统》第12章《编写代码》渐进式部署(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_099.html`) - 结论依据:原文描述给存在SQL注入风险的函数引入方法重载和注解,用Git hooks阻止新代码使用旧的字符串重载,并说明"如果项目处于活跃开发阶段,会自然而然地向安全API收拢……就可以人工清理存量了。这样,项目代码从设计机制上就对SQL注入漏洞免疫了"。 - 原始内容:接着,引入Git hooks分析每次提交,防止增量代码使用基于字符串类型的重载,或者可以限制不安全API的可见性……如果项目处于活跃开发阶段,会自然而然地向安全API收拢……这样,项目代码从设计机制上就对SQL注入漏洞免疫了。