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>
等工作。
我的問題是這個實現有多安全?任何人都可以以惡意的方式使用它? 也許任何人都可以告訴我一個更好的方法來找出這個問題?
謝謝Noypi的回答。你爲什麼這樣講?什麼樣的關注? – sergioska 2014-09-02 10:18:16
如果解析是由後端完成的,我認爲惡意代碼可能會影響解析器(即如果攻擊者知道在後端使用什麼)。 – 2014-09-02 10:22:35
我想知道更具體的內容。你能告訴我一個例子嗎? – sergioska 2014-09-03 16:07:52