gpt4 book ai didi

javascript - ng-bind-html 不会阻止跨站点脚本

转载 作者:行者123 更新时间:2023-11-30 07:00:30 25 4
gpt4 key购买 nike

我使用 ng-bind-html 来防止跨站点脚本,了解 sanitize并找到this discussionanother good discussion .

虽然,我没有为我工作,你能帮我弄清楚为什么吗?

HTML:

<p class="big-text" ng-bind-html="to_trusted(message)">

JS:

$scope.to_trusted = function(html_code) {
return $sce.trustAsHtml(html_code);
};

当我添加以下行时

<img src="x" onerror="alert('cross')">

并将它添加到消息中我可以看到它呈现在 DOM 中,当我刷新页面时我可以看到消息。

dom image

弹出窗口显示: enter image description here

你能告诉我我做错了什么吗?

最佳答案

首先,它本身并不是 XSS。

其次,$sce.trustAsHtml 与您的想法完全相反 - 事实上,它指示 Angular“相信”HTML 是安全的 - 而不是进行清理。

要清理,您需要将 ngSanitize 添加为您应用的依赖项,并将 ng-bind-html 直接添加到 html_code(没有to_trusted).

angular.module("myApp", ["ngSanitize"])
.controller("MainCtrl", function($scope){
$scope.html_code = '<img src="x" onerror="alert(\'cross\')">';
});

在 HTML 中:

<div ng-bind-html="html_code"></div>

关于javascript - ng-bind-html 不会阻止跨站点脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28325714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com