【发布时间】:2014-07-13 09:36:30
【问题描述】:
我最近一直在关注 Pagedown.js,因为它具有在我的页面上使用 mark-down 而不是丑陋的只读文本区域的魅力。
我非常谨慎,因为它似乎很容易欺骗经过消毒的转换器。我已经看到一些关于 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 为何不使用 sanitizer 服务对其开放,或者这也只是一场闹剧?
【问题讨论】:
-
完全正确。 没有什么客户端是安全的。
-
似乎有更多的回答者回答,好像这个问题是关于客户端验证的。清理是完全不同的事情(实际上它发生在频谱的完全相反的一面:(客户端)验证发生在用户发送数据之前,(客户端)清理发生在用户从服务器接收数据之后)。 Sanitizaton确实让您的应用更安全,但只能与其他措施/实践结合使用。
-
这是朝着正确方向迈出的非常重要的一步,绝对应该成为您应用程序的一部分。但是,它并不能神奇地解决您的所有问题。它是一个有用的工具,应该相应地使用和处理。
标签: javascript html angularjs knockout.js javascript-injection