知识卡片
安全库故意只覆盖常见场景
内容
想做一个能应对所有场景的安全库(比如处理HTML单引号、JS作用域、HTML属性三层嵌套上下文的模板引擎)往往极其复杂,难以正确使用。更实际的策略是反过来:先做一个只覆盖最常见场景、简单到易于解释和正确使用的小库,帮助说服其他人采纳”默认安全”的函数库;不同场景(复杂页面模板与短代码片段)再提供不同库。这是用真实使用频率反向驱动库的复杂度增长,而非一开始追求大而全。
参考来源
- 位置:《Google系统架构解密:构建安全可靠的系统》第12章《编写代码》12.3.1节(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_099.html`)
- 结论依据:原文说明要构建能处理单引号、JavaScript作用域、HTML属性所有上下文组合的模板引擎"十分复杂,而且如果要使用这套系统也不会很容易",建议"从开发一个简单的小型库开始。它仅覆盖常用的使用场景,并且要易于正确使用"。
- 原始内容:要构建一套能处理所有上下文场景组合的模板引擎十分复杂,而且如果要使用这套系统也不会很容易……相反,你需要从开发一个简单的小型库开始。它仅覆盖常用的使用场景,并且要易于正确使用。简单的函数库会更容易解释、为其写文档和使用。