假设我有一个字符串键和字符串值的对象,我想将它们作为 CSS 自定义属性写入服务器生成的一些 HTML。我怎样才能安全地这样做?
安全地我的意思是
为了简单起见,我将限制键只允许类中的字符
[a-zA-Z0-9_-]
.
通过阅读 CSS 规范和一些个人测试,我认为我可以通过以下步骤获得价值:
{([
都有匹配的右大括号。如果不是,则丢弃此键值对。<
转义\3C
的所有实例,用>
转义所有3E
的实例。;
转义\3B
的所有实例。对于上下文,这些属性可能被我们插入其他地方的用户自定义样式使用,但同一对象也用作模板中的模板数据,因此它可能包含混合用作内容的字符串和用作 CSS 的字符串变量。我觉得上面的算法在非常简单之间取得了很好的平衡,但也不会冒险丢弃太多可能在 CSS 中有用的键值对(即使考虑将来添加到 CSS,但我想确保我没有遗漏任何东西。