最近我一直在研究 Pagedown.js,因为使用 markdown 可以代替丑陋的只读文本框,这很吸引人。
然而,我非常谨慎,因为似乎很容易欺骗经过处理的转换器。我看到过一些关于 Angular.js 和它的 html 绑定的讨论,也听说在 Knockout.js 3.0 发布时曾存在 html 绑定不安全的问题。
似乎某些人只需要做一些类似于以下的事情,就可以禁用 Pagedown.js 中的过滤器 -
var safeConverter = new Markdown.Converter();
// safeConverter is open to script injection
safeConverter = Markdown.getSanitizingConverter();
// safeConverter is now safe
// Override the getSanitizingConverter pseudo-code
Markdown.getSanitizingConverter = function () {
return Markdown.Converter;
};
他们可能会打开一个站点以进行脚本注入。这不是真的吗?
编辑
那么为什么像那样的库会打包一个用于客户端使用的清洁剂呢?当然,它们说不要渲染未经过净化的HTML,但下一行说使用Markdown.Sanitizer..
Angular的清洁剂服务如何不易受攻击,或者这只是一个幌子?