问题标签 [angular-sanitizer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
440 浏览

angular - 如何检查带有 iframe 的 html 是否安全?

我从可能包含来自以下服务的嵌入式视频的 html 代码的 API 字符串中获取:

  • youtube.com,
  • vimeo.com,
  • dailymotion.com,
  • prezi.com

如果我确定它足够安全,我可以将它们转换为受信任的 SafeHtml(绕过 Angular 的消毒剂):

然后将它放在这样的页面上:

问题:

  1. 我必须执行哪些检查以确保该字符串足够安全?(它不包含嵌入式脚本,并且只指向这四个站点之一,没有任何棘手的重定向)?

  2. 以某种方式将这些站点添加到 Angular 的消毒剂的例外中是否有意义?如果是,该怎么做?

提前致谢!

ps 我看到了类似的问题:如何检查 HTML 字符串是否安全? 但我希望有一些更新鲜和与 Angular 最佳实践相关的东西

0 投票
2 回答
365 浏览

javascript - 翻译时在角度js中显示样式标签

这是我的控制器文件,其中

我的 *.resx 文件包含

在我的定义中,HTML我定义了以下内容:

但最终,风格并没有兑现。显示类似

微标签是MicroTag

任何指针?

0 投票
1 回答
59 浏览

javascript - 创建 AngularJs 元素时强制转义字符的问题

我偶然发现了 AngularJS 和元素创建的问题。简而言之:我需要创建一个包含 html 内容的元素,但我确实希望手头有对该元素的引用,这样我就可以对其执行一些操作,而无需在浏览器中实际呈现它。

我尝试执行以下操作:

哪种方法可以解决问题,但是...其中一些模板具有逻辑表达式。例如:

不幸的是,似乎当我尝试创建这样一个元素时,无论我是否使用$sce.trustAsHtml()这些条件ng-bind-html中的&字符都被转义为&. 我在模板中得到的 html 如下所示:

请看一下小提琴:https ://jsfiddle.net/3uxdrp7b/1/

如果这是一个已知问题 - 我会很感激你指出我正确的方向,因为我一直在努力解决这个问题,但我无法让它发挥作用。我查看的每个示例在绑定中都有一个简单的 html - 除非我使用 cursed ,否则一切正常&

0 投票
1 回答
122 浏览

angularjs - 为什么 Angular 的 $sanitize 不允许输入和按钮元素?

我有一个关于 angular-sanitize($sanitize)[1] 的问题。为什么它不允许输入和按钮元素?

示例代码:

我查看了代码,发现有硬编码的有效元素 [2]。我的问题更多关于“为什么他们将它们视为有害元素”

谢谢!

[1] - https://github.com/angular/angular.js/blob/0822d34b10ea0371c260c80a1486a4d508ea5a91/src/ngSanitize/sanitize.js#L1 [2] - https://github.com/angular/angular.js/blob /0822d34b10ea0371c260c80a1486a4d508ea5a91/src/ngSanitize/sanitize.js#L265-L269

0 投票
1 回答
409 浏览

angularjs - 清理一些翻译值,但不清理其他值

我有一个 angular-translate指令,它接受混合的参数。有些是用户生成的,有些是必须编译的 HTML(使用translate-compile)。

请参阅此 plunker以获得一个工作的、大大简化的示例。

translate-sanitize-strategy设置为“null”时,不会对任何内容进行清理:

这使得您必须向 john-doe 支付 13.37 欧元

但是当用户将昵称设置为 时john-<span onmouseover="this.textContent=\'h@ck3d\'">doe</span>,它将运行该昵称并在鼠标悬停后呈现,您必须向 john-h@ck3d 支付 13.37 欧元。显然是 XSS 的一个例子。

当我将策略设置为 时sanitizeParameters,这也是我们的全局设置,受益人得到了适当的消毒。但是amount,我信任(此时)并且需要编译的 也是如此!

这使得You must pay to john-doe。因此,该beneficiary值已正确清理,但值量也是如此,我需要保持未经清理以便 Angular 编译它。

我已经搜索了一个解决方案,我使用过滤器手动清理受益人的价值:

但这似乎需要我编写一个使用ngSanitize服务的过滤器;不是那么难,但仍然有一些工作、测试和代码,我希望本机可用。某处。

我已经通读了角度翻译代码,以查找是否存在(隐藏)标志或命名约定等,允许按值设置清理,但找不到。诸如translate-sanitize-attributes="['foo', 'bar']" or even atranslate-value-amount-astrusted=` 之类的东西。但是找不到任何暗示能够按价值设置清理策略或省略它的东西。

这通常是如何在 angularjs 和 angular-translate 中实现的?

0 投票
1 回答
1358 浏览

angularjs - 1.7.0 上的 AngularJS ngSanitize 错误

我几乎遇到了这个错误: AngularJS ngSanitize Error

简短版本:“小写字母不是函数”。

虽然我的应用程序将 AngularJS 强制执行为 1.4.9,但我们没有强制执行 angular-sanitize,因此它解析为 1.7.0,并且在该版本的 AngularJS 上,小写函数不再存在,从而产生错误。

可能通过将 angular-sanitize 强制为固定版本可以解决此问题,但我想超越修复它并了解导致问题的原因以及原因,因为我发现了一些不一致之处。

  • AngularJS 被强制到 1.4.9。bower-components 文件夹包含此版本,编译后的 build 文件夹也包含此版本,Chrome 上的开发人员面板显示仅获取此版本。这个版本确实有小写的方法。

  • Angular-sanitize 有 angular 1.7.0 作为依赖项,但它从未下载过,永远不会。不在整个项目的任何单个文件夹或子文件夹中,不在编译时,也不在 Chrome 中。所以我猜他唯一可以访问的angular.js是 1.4.9,它确实有小写的方法。

如果唯一可用的angular.js仍然具有该方法,我不太明白为什么会出现“小写不是函数”错误。另外我不明白为什么 angular-sanitize 1.7.0 要求 angular 1.7.0 在 AngularJS 1.7.0 上使用不存在的方法(Angular 开发人员错误?但我很难相信。)

sanitize 可能正在以某种方式下载和访问 angular 1.7.0,但我想知道如何。只是出于好奇。并且还要确认这是否是 Angular 开发人员的错误,或者我是否遗漏了一些东西。

0 投票
8 回答
29165 浏览

javascript - 未捕获的类型错误:angular.lowercase 不是函数

未捕获的类型错误:angular.lowercase 不是函数

我的 angularjs 应用程序中出现此错误,并且整个应用程序未运行。这是它在textAngular-sanitize.js:413.

无法调试,我尝试使用与 angular.js 相同的版本,但没有成功。请为此提供解决方案。除了控制台中的此错误消息外,我没有任何可分享的内容。

0 投票
0 回答
97 浏览

angularjs - tether-shepherd 与 Angular 版本 1.7.0 不兼容

之前我使用的是 angular 1.5 版和 angular sanitize 1.5 版。但是现在我已经将我的依赖关系从 1.5 版更新到 1.7 版,用于角度和角度清理,并且在更新的版本中,Shepard 卡无法正常工作。因此,任何人都知道 tether-shepherd 1.8.1 和 angular 1.7 之间是否存在任何兼容性问题。

不工作意味着 Shepard 卡没有出现在应该出现的页面上。

提前致谢...

0 投票
2 回答
621 浏览

javascript - 在变量上使用脚本标记时角度清理抛出错误

尝试使用 angular sanitizer 在我的应用程序上实现 angular sanitizer,但它没有按预期工作。

引发 Uncaught SyntaxError:使用脚本时出现无效或意外的令牌错误

$scope.snippet = "<script type='text/javascript'>alert(1)</script>"

没有脚本也能正常工作

它在浏览器中发出警报,但期望 p 标签的内部文本。

还可以在 html 中获取输出

{{ 逃脱(””) }}

如何通过从 html 模板调用控制器函数来清理具有脚本标记的变量。

0 投票
1 回答
30 浏览

angular-sanitizer - Angular中的消毒

我有一个具有属性 photoPath 的子模型

我正在尝试清理 photoPath 以绕过角度安全性

路径被调用并分配为public imgurl: Child["photoPath"];数组中的 ( )

HMTL 调用 imgurl 如下所示: