Ian*_*ter 9 javascript sanitization angularjs angularjs-directive
该$sanitize服务告诉我
然后将所有安全令牌(来自白名单)序列化为正确转义的html字符串.
我想只显示HTML的一个更小的子集(即em,p,a和strong).有没有办法轻松修改$service白名单而无需修改核心JavaScript?
您可以修饰$ sanitize服务以避免更改源文件.这是一个只记录$ sanitize中发生的事情的例子.您可以执行过滤不需要的元素所需的操作.
var app = angular.module("app", ["ngSanitize"]);
app.config(function($provide){
$provide.decorator("$sanitize", function($delegate, $log){
return function(text, target){
var result = $delegate(text, target);
$log.info("$sanitize input: " + text);
$log.info("$sanitize output: " + result);
return result;
};
});
});
Run Code Online (Sandbox Code Playgroud)
请注意,在装饰器内部,$ delegate引用$ santize.在调用$ delegate(text,target)然后返回结果之前,您将从输入中过滤出您想要的内容.
小智 5
您可以使用 $delegate (如 jdforsythe 提到的)和其他一些库。我个人在我的项目中使用sanitizeHtml因为它允许我选择允许使用哪些标签。设置:
angular
.module('myApp', [])
.config(['$provide', ($provide) => {
$provide.decorator('$sanitize', ['$delegate', ($delegate) => {
return function(text, target) {
const preSanitizedText = sanitizeHtml(text, {
allowedTags: ['b', 'i', 'em', 'strong', 'a']
});
return $delegate(preSanitizedText, target);
};
}]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3403 次 |
| 最近记录: |