web-dev-qa-db-ja.com

AngularJS:「安全なコンテキストで安全でない値を使用しようとする」を解決する方法は?

データをtext-htmlとして表示しようとすると、HTML形式で表示されましたが、ページを更新すると、次のエラーが表示されます。

[$ sce:unsafe]安全なコンテキストで安全でない値を使用しようとしています。

ここに私のAngularJSコードがあります:

data.attributes.task_name = $sce.trustAsHtml(data.attributes.task_name);

[〜#〜] html [〜#〜]

<span ng-bind-html="taskdata.attributes.task_name" data-html="true" title="{{reminder.attributes.message}}"></span>
22
STackers

Angular documentation から:

特定のコンテキストで使用するために提供された値は、使用しても安全/信頼できるものではありませんでした。

AngularJSの Strict Contextual Escaping(SCE) モード(デフォルトで有効)では、特定のコンテキストでのバインディングが必要で、そのようなコンテキストで安全に使用できると信頼される値になります。 (たとえば、AngularJSテンプレートをURLからロードするには、URLがリソースをロードしても安全であると見なされる必要があります。)

これにより、XSSおよびその他のセキュリティの問題を防ぐことができます。詳しくは Strict Contextual Escaping(SCE) をご覧ください

自動サニタイズを使用するには、ngSanitizeモジュールを含めることができます。


含める必要がありますngSanitize

ロードindex.html

<script src="lib/angular/angular-sanitize.min.js"></script>

それを依存関係としてapp.jsに注入します:

angular.module('myApp', ['...', 'ngSanitize']);
45
Mistalis