前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >web安全csp白名单的弊端

web安全csp白名单的弊端

作者头像
smy
发布2019-12-25 14:35:00
1.7K0
发布2019-12-25 14:35:00
举报
文章被收录于专栏:smy

csp的使用方式:

代码语言:javascript
复制
<meta http-equiv="Content-Security-Policy" content="script-src 'self'  cdn.staticfile.org *.cnzz.com hm.baidu.com *.fraudmetrix.cn *.tongdun.net *.geetest.com blob: 'unsafe-inline' 'unsafe-eval'">

还可以强制本页面资源升级到https:

代码语言:javascript
复制
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

csp弊端:

一. chrome-extension 直接嵌入script标签的方式 :

代码语言:javascript
复制
<script type="text/javascript" src="chrome-extension://cfjajdmplgcnfchakhmfonhbckkjefng/js/kendogrid.js"></script>

CSP会进行拦截报错,不加载js:

二. 使用谷歌插件对script标签内的js进行拦截替换

代码语言:javascript
复制
<script type="text/javascript" src="//<?= STATIC_DOMAIN ?>/js/sea-css.js"></script>

假设页面存在以上资源,现用插件对其进行拦截替换本地包的资源:

代码语言:javascript
复制
chrome.webRequest.onBeforeRequest.addListener(
    function(details) {
        var lowerDetails = details.url.toLowerCase();
        if(lowerDetails.indexOf("sea-css.js"))
        {
            return {redirectUrl: chrome.extension.getURL("js/sea-css.js")}; //你要替换的js脚本
        }

    },
    {
        urls: [
            "http://xxx/*/sea-css.js*"
        ],  //你要拦截的url地址
        types: ["script"]       //拦截类型为script,
    },
    ["blocking"] //类型blocking为拦截,
);

CSP拦截拒绝访问:

三. 动态插入chrome-extension js时

代码语言:javascript
复制
injectJs('chrome-extension://cfjajdmplgcnfchakhmfonhbckkjefng/js/kendogrids.js')

// 向页面插入JS
function injectJs(jsPath)
{
    var tem = document.createElement('script');
    tem.setAttribute('type', 'text/javascript');
    tem.src = jsPath
    document.body.appendChild(tem);
}

此时页面可以正常访问js资源,csp不对动态插入的 chrome-extension 进行拦截限制

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • csp的使用方式:
  • csp弊端:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档