内容安全策略-无法加载外部脚本

时间:2019-12-23 08:28:50

标签: javascript html content-security-policy

对于一个私人项目,我想从我的家庭服务器加载一些外部图像,脚本和样式,但是它不起作用。错误在哪里?

Nginx配置文件

location / {
            index  index.php index.html index.htm;
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            server_tokens off;
            add_header X-Frame-Options SAMEORIGIN;
            add_header X-Content-Type-Options nosniff;
            add_header X-XSS-Protection "1; mode=block";
            add_header Content-Security-Policy  "default-src *; script-src *; object-src *; style-src *; img-src *; media-src *; frame-src *; font-src *; connect-src *";
            add_header X-Content-Security-Policy "default-src *; script-src *; object-src *; style-src *; img-src *; media-src *; frame-src *; font-src *; connect-src *";
            add_header X-WebKit-CSP "default-src *; script-src *; object-src *; style-src *; img-src *; media-src *; frame-src *; font-src *; connect-src *";

}

HTML元标记:

<meta http-equiv="Content-Security-Policy" content="default-src *; script-src *; style-src *; img-src *; font-src *; connect-src *; media-src *; object-src *; prefetch-src *; child-src *; frame-src *; worker-src *; frame-ancestors *; form-action *; sandbox allow-forms allow-same-origin allow-scripts allow-top-navigation allow-popups allow-pointer-lock; reflected-xss allow; base-uri *; manifest-src *;" />
    <meta http-equiv="X-Content-Security-Policy" content="default-src *; script-src *; object-src *; style-src *; img-src *; media-src *; frame-src *; font-src *; connect-src *">
    <meta http-equiv="X-WebKit-CSP" content= "default-src *; script-src *; object-src *; style-src *; img-src *; media-src *; frame-src *; font-src *; connect-src *">

1 个答案:

答案 0 :(得分:0)

问题在于*仅与网络方案URL(http / https / ftp等)匹配。所以你可以

  1. 将网络方案URL添加到策略中(例如myserver.com
  2. cdvfile:添加到您的政策中

我会用您的家庭服务器URL制作一个default-src,并删除所有其他源。如果只允许从相同来源加载内容,则应将CSP源设置为'self'(以防您的项目托管在家庭服务器上)。

配置中的大多数CSP指令都是多余的,例如:如果要允许任何URI作为站点的基本URI,则应删除base-uri。我建议检查每个指令以获取必要的结果。 CSP有一个不错的备忘:https://content-security-policy.com/