我使用AntiXss编码器上的服务器端用于XSS atacks因此所有响应包括HTML UNESCAPE字符,如“& LT:脚本& GT:警报(1); & LT:/脚本& GT:” (替换为';'为':')angularjs消毒上NG-模型
关于绑定我使用清理与ng-bind-html这是没有问题的。 有更新模式的其他控制输入。当用户需要更新文本时,他们点击更新图标,然后我显示textarea并隐藏绑定标签ng-if。 textarea有ng-model attr。我不能逃避textarea上的html字符,如ng-bind-html这里是摘录帮助我得到creazy ..
in fiddle;编辑模式下的textarea必须显示“<脚本>警报(1); < /脚本>”没有警报操作和数据将被发送到服务器上必须显示相同的太...
var app = angular.module('myApp',['ngSanitize']);
app.controller('MyCtrl', function($scope, $sce, $sanitize) {
$scope.post1 = "<script>alert(1);</script>";
//$scope.post2 = $sce.parseAsHtml("<h1>alert(1)</h1>");
$scope.logs = ["log created"];
$scope.log = function(val){
\t $scope.logs.push(val);
}
});
.label {
text-decoration:underline;
color:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-sanitize.min.js"></script>
<div ng-app="myApp">
<div ng-controller="MyCtrl">
<div class="label">Edit mode :</div>
<textarea ng-model="post1" style="width:100%;" rows="5"></textarea><br />
<div class="label">Binding mode :</div>
<div ng-bind-html="post1"></div><br />
<div class="label">Data will be send to the server :</div>
<div>{{post1}}</div><br />
<div class="label">Logs (if needed) :</div>
<div ng-repeat="d in logs">
<p>{{($index+1) + ". " + d}}</p>
</div>
</div>
</div>
我已经使用消毒并用消毒$什么也没有发生一样:( –
我也可以确认使用$ sanitize模块不适用于ng模型 – DrewT