我正在使用contentEditable div來使用戶能夠格式化他們的文章。我對html內容做了一些處理並堅持下來。爲什麼AngularJS在使用ng-bind-html時去除數據屬性?
我正在使用ng-bind-html
在觀看者想要閱讀文章時呈現結果。我不想使用$sce.trustAsHtml
,因爲我仍然希望AngularJS消毒用戶輸入,因爲我不信任所有輸入。我想要的只是AngularJS消毒功能允許元素具有某些屬性。它似乎剝離了ID和數據屬性。 (但保持課堂和標題)。
數據屬性是否被認爲是有害的?攻擊者如何使用它們來攻擊最終用戶?有沒有一種方法可以安全地使用它們,並讓Angular不會將它們剝離出來?
下面是一個例子:
article.body = '<p data-guid="afasfa-afasfafas-faf-asasf" class="guid-tagged">Yes this is my article</p>';
<article ng-bind-html='article.body'></article>
下面是文章標籤內角輸出(注意去掉了數據 - 屬性):
<p class="guid-tagged">Yes this is my article</p>
感謝
衛生洗滌劑具有允許屬性的硬編碼列表,這意味着沒有內置功能來添加您自己的屬性,並且默認情況下會刪除數據屬性。你cak檢查源代碼https://github.com/angular/angular.js/blob/master/src/ngSanitize/sanitize.js – jornare 2015-02-20 15:29:25