知识卡片

安全库故意只覆盖常见场景

普通读书笔记卡 · 1457.b

内容

想做一个能应对所有场景的安全库(比如处理HTML单引号、JS作用域、HTML属性三层嵌套上下文的模板引擎)往往极其复杂,难以正确使用。更实际的策略是反过来:先做一个只覆盖最常见场景、简单到易于解释和正确使用的小库,帮助说服其他人采纳”默认安全”的函数库;不同场景(复杂页面模板与短代码片段)再提供不同库。这是用真实使用频率反向驱动库的复杂度增长,而非一开始追求大而全。

参考来源

- 位置:《Google系统架构解密:构建安全可靠的系统》第12章《编写代码》12.3.1节(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_099.html`) - 结论依据:原文说明要构建能处理单引号、JavaScript作用域、HTML属性所有上下文组合的模板引擎"十分复杂,而且如果要使用这套系统也不会很容易",建议"从开发一个简单的小型库开始。它仅覆盖常用的使用场景,并且要易于正确使用"。 - 原始内容:要构建一套能处理所有上下文场景组合的模板引擎十分复杂,而且如果要使用这套系统也不会很容易……相反,你需要从开发一个简单的小型库开始。它仅覆盖常用的使用场景,并且要易于正确使用。简单的函数库会更容易解释、为其写文档和使用。