ng-bind-html-unsafe
a été supprimé dans Angular 1.2
J'essaie d'implémenter quelque chose où je dois utiliser ng-bind-html-unsafe
. Dans les documents et sur le github, ils disent:
ng-bind-html fournit un comportement similaire à ng-html-bind-unsafe (innerHTML est le résultat sans nettoyage) lorsqu'il est lié au résultat de $ sce.trustAsHtml (chaîne).
Comment est-ce que tu fais ça?
Réponses:
Ça devrait être:
plus dans votre contrôleur:
au lieu de l'ancienne syntaxe, où vous pouviez référencer
$scope.html
directement une variable:Comme plusieurs commentateurs l'ont souligné,
$sce
doit être injecté dans le contrôleur, sinon vous obtiendrez une$sce undefined
erreur.la source
<p ng-bind-html="trustedHtml"></p>
et$scope.trustedHtml = $sce.trustAsHtml(description(category.id));
<p ng-bind-html="description(category.id)"></p>
puis la dernière ligne de la fonction:return $sce.trustAsHtml(value);
Filtre
Usage
la source
ngSanitize
ici?ngSanitize
, donc il n'y a pas besoin dengSanitize
Personnellement, je désinfecte toutes mes données avec certaines bibliothèques PHP avant d'entrer dans la base de données, il n'y a donc pas besoin d'un autre filtre XSS pour moi.
Depuis AngularJS 1.0.8
Utiliser:
Pour désactiver
$sce
:la source
<script>System.out.printIn("Hello World!");</script>
, je n'ai pas essayé personnellement parce que mon PHP a supprimé tous les JS des entrées utilisateur. J'ai supprimé mon deuxième exemple parce que celui natif d'Angular est supérieur à tous égards, utilisez-le simplement.var line = "<label onclick="alert(1)">aaa</label>";
1. utiliser un filtre
en utilisant (html):
2. utilisez ngSanitize: plus sûr
comprendre
angular-sanitize.js
ajouter
ngSanitize
une application angulaire racineen utilisant (html):
la source
La simple création d'un filtre fera l'affaire. (Répondu pour Angular 1.6)
Et utilisez-le comme suit dans le html.
la source
Si vous souhaitez récupérer l'ancienne directive, vous pouvez l'ajouter à votre application:
Directif:
Usage
Source - https://github.com/angular-ui/bootstrap/issues/813
la source
Javascript
HTML
la source
Pour Rails (au moins dans mon cas) si vous utilisez le joyau angularjs-rails , n'oubliez pas d'ajouter le module sanitize
Et puis chargez-le dans votre application ...
Ensuite, vous pouvez effectuer les opérations suivantes:
Sur le modèle:
Et éventuellement:
la source
la source
la source