2014-09-02 55 views
1

在Web應用程序中,我的客戶端(基於angularjs)接收來自Web服務的json數據。 Json可以包含帶有一些URL的文本字段;例如:使用angularjs過濾器來解析url是否安全?

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

我需要呈現此鏈接爲html,所以我需要用html標記替換網址。 搞清楚,下面一個要點後,我試着做如下過濾器:

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> 

等工作。

我的問題是這個實現有多安全?任何人都可以以惡意的方式使用它? 也許任何人都可以告訴我一個更好的方法來找出這個問題?

回答

0

如果解析發生在後端,我應該更關注。如果這發生在JavaScript方面,我應該信任那些共享url。

+0

謝謝Noypi的回答。你爲什麼這樣講?什麼樣的關注? – sergioska 2014-09-02 10:18:16

+0

如果解析是由後端完成的,我認爲惡意代碼可能會影響解析器(即如果攻擊者知道在後端使用什麼)。 – 2014-09-02 10:22:35

+0

我想知道更具體的內容。你能告訴我一個例子嗎? – sergioska 2014-09-03 16:07:52

相關問題