使用angularjs过滤器来解析网址是否安全?

时间:2014-09-02 05:49:32

标签: javascript json angularjs

在Web应用程序中,我的客户端(基于angularjs)从Web服务接收json数据。 Json可以包含带有一些url的文本字段;例如:

blah blah ... http://www.example.com blah blah blah ...

我需要将此链接呈现为html,因此我需要用html标记替换url。 要弄清楚,按照要点后,我尝试按照过滤器进行操作:

botino.filter('parseUrl', function($sce) {
    replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;
    return function(text, target, otherProp) {
        angular.forEach(text.match(replacePattern1), function(url) {
            text = text.replace(replacePattern1, '<a href="$1" target="_blank">$1</a>');
        });
        text = $sce.trustAsHtml(text);  
    return text;
    };
});

这样,在我使用的html页面上:

<span ng-bind-html="tweet.text | parseUrl"></span>

等工作。

我的问题是这个实施有多安全?任何人都可以恶意使用它吗? 也许有人可以建议我找出解决这个问题的更好方法吗?

1 个答案:

答案 0 :(得分:0)

如果解析发生在后端,我应该更加关注。如果这发生在javascript方面,我应该相信那些分享网址的人。