我正在尝试将消息传递给看起来像这样的Mustache模板:
您提供的网址http://example.com
无效.
用户指定URL,因此需要转义URL.但是我想在URL周围添加标签,因此它从周围的文本中脱颖而出,因此代码标签需要通过而不会被转义.
我可以这样写:
{{text_before_url}}{{url}}
{{text_after_url}}
但是,消息的文本各不相同,并不总是适合该结构.
我也可以尝试使用三个大括号输出原始文本{{{messages}}}
,并使用类似的东西转义URL htmlentities($url)
,但是如果有人稍后调整程序以传递新消息,并且传入数据而没有意识到它必须被转义,那么我们是在大XSS麻烦.
我可能只是运气不好,而且我理解拥有一个简单的模板引擎的价值,但有一些方法我可以告诉Mustache HTML标签是否正常,同时转出其余的输出?
凯文
将导致在模板中使用{{variable}} 5> 2 5 > 2
,其中{{{}}(3个胡须)的使用将导致5 > 2
.
参看 文档:https://github.com/defunkt/mustache#escaping