加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 禁用$sce服务缺陷

发布时间:2020-12-17 17:38:28 所属栏目:安全 来源:网络整理
导读:如果我完全禁用$sce服务会发生什么不好的事情? angular.module('app').config(function ($sceProvider) { $sceProvider.enabled(false);}); 解决方法 如果您100%确定所有应用程序绑定(HTML,URL …)都是安全的,则应该只禁用SCE.例如,如果应用程序在呈现之前
如果我完全禁用$sce服务会发生什么不好的事情?

angular.module('app').config(function ($sceProvider) {
    $sceProvider.enabled(false);
});

解决方法

如果您100%确定所有应用程序绑定(HTML,URL …)都是安全的,则应该只禁用SCE.例如,如果应用程序在呈现之前始终在服务器或客户端上清理用户输入,则可能不需要SCE强制执行的附加仪式.

但是,您很可能100%肯定所有值都是安全的,特别是当应用程序变大并且由许多开发人员编码时.启用S??CE会强制应用程序只能使用$sce.trustAsXXX方法之一显式标记为受信任的值.

例如,如果使用ngBindHtml呈现某些HTML,除非分配给ngBindHtml的范围变量包含在$sce.trustAsHtml中,否则AngularJS将抛出错误.设置路由或指令的templateUrl时会发生类似的强制执行.这使得应用程序通过快速失败更加安全,使您有机会审核发生错误的每个位置,并决定是信任还是修复它.

最后要注意的是,如果您包含ngSanitize或实现$sanitize服务,那么您不需要禁用SCE来使用不受信任的HTML值,因为AngularJS将使用$sanitize服务清理不受信任的输入.同样,如果模板URL将源作为应用程序共享,则无需显式包装它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读