【问题标题】:Replace $sanitize implementation in angular with DOMPurify?用 DOMPurify 替换 Angular 中的 $sanitize 实现?
【发布时间】:2019-10-01 00:20:05
【问题描述】:

是否可以将 angularjs(版本 1.5.x)中 $sanitize 函数的本机实现替换为使用 DOMPurify 的自定义实现?

我的目标是能够编写 ng-bind-html=value 并在清理 HTML 时使用 DOMPurify。

【问题讨论】:

标签: angularjs security xss angularjs-1.6 dompurify


【解决方案1】:

您可以使用 DOMPurity 在渲染数据之前对其进行清理。如果是这样,请不要注入$sanitize

在 XSS 安全性方面(当您标记它时),请注意 DOMPurify is not made to work with AngularJS:

DOMPurify 不会阻止您因疯狂的库引起的 XSS 例如 AngularJS 的功能。我们实施了保护 外套以防止 jQuery-XSS 但不能覆盖所有其他 图书馆。如果您使用的库具有疯狂的 XSS 漏洞,或者您不确定是否是这种情况,请与 我们。另见:JSMVCOMFGmustache-securityjPurify

【讨论】:

  • 即使在使用 ng-bind-html 指令并且开发人员忘记在渲染数据之前调用 DOMPurify 的情况下,我也希望调用 DOMPurify
【解决方案2】:

不使用ngSanitize module,只需为$sanitize 提供您自己的实现:

angular.module("yourModule").factory("$sanitize", () => html =>
  DOMPurify.sanitize(html, {
    SAFE_FOR_JQUERY: true,
    // ... other settings
  })
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-06
    • 2021-08-13
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    • 2020-12-25
    • 2013-01-21
    • 1970-01-01
    相关资源
    最近更新 更多