根据 Google Page Speed,script-src 缺失,尽管它位于 .htaccess 中

问题描述 投票:0回答:1

我正在尝试解决这些警告

缺少

script-src
指令。这可能允许执行不安全的脚本。和 缺少
object-src
允许注入执行不安全脚本的插件。如果可以的话,请考虑将
object-src
设置为
'none'

Google Page Speed 报告的“信任与安全部分”。我使用过多种浏览器,包括当前的 Edge、Chrome、Firefox(也是开发者版)、Chrome。有趣的是,虽然不是主要问题:为什么我使用不同的浏览器在 Google Page Speed 中得到不同的结果?具体示例:在 Opera 中运行 Page Speed 会在“最佳实践”中引发以下错误

“已弃用的 API 最终将从浏览器中删除。了解有关已弃用的 API 的更多信息。”和 “卸载事件不会可靠地触发,侦听它可能会阻止浏览器优化,例如后退缓存。请改用 pagehide 或visibilitychange 事件。了解有关卸载事件侦听器的更多信息”

该部分的分数降至 74。使用 Chrome 运行同一网站,没有出现此类错误,“最佳实践”中的分数为 100。

这些是我当前的规则(受到 CSP for AdSense

的启发)
<IfModule mod_headers.c>
Header set Content-Security-Policy "upgrade-insecure-requests"
Header set Content-Security-Policy "object-src 'none';"
Header set Content-Security-Policy "block-all-mixed-content"
Header set Content-Security-Policy "frame-ancestors 'self';"
Header set Content-Security-Policy "img-src 'self' https://jigsaw.w3.org/css-validator/images/vcss https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com https://*.g.doubleclick.net https://*.google.com https://*.google.com pagead2.googlesyndication.com;"
Header set Content-Security-Policy "frame-src 'self' 'unsafe-inline' googleads.g.doubleclick.net tpc.googlesyndication.com;"
Header set Content-Security-Policy "script-src 'self' 'unsafe-inline' pagead2.googlesyndication.com partner.googleadservices.com tpc.googlesyndication.com www.googletagservices.com adservice.google.com adservice.google.ad adservice.google.ae adservice.google.com.af adservice.google.com.ag adservice.google.com.ai adservice.google.al adservice.google.am adservice.google.co.ao adservice.google.com.ar adservice.google.as adservice.google.at adservice.google.com.au adservice.google.az adservice.google.ba adservice.google.com.bd adservice.google.be adservice.google.bf adservice.google.bg adservice.google.com.bh adservice.google.bi adservice.google.bj adservice.google.com.bn adservice.google.com.bo adservice.google.com.br adservice.google.bs adservice.google.bt adservice.google.co.bw adservice.google.by adservice.google.com.bz adservice.google.ca adservice.google.cd adservice.google.cf adservice.google.cg adservice.google.ch adservice.google.ci adservice.google.co.ck adservice.google.cl adservice.google.cm adservice.google.cn adservice.google.com.co adservice.google.co.cr adservice.google.com.cu adservice.google.cv adservice.google.com.cy adservice.google.cz adservice.google.de adservice.google.dj adservice.google.dk adservice.google.dm adservice.google.com.do adservice.google.dz adservice.google.com.ec adservice.google.ee adservice.google.com.eg adservice.google.es adservice.google.com.et adservice.google.fi adservice.google.com.fj adservice.google.fm adservice.google.fr adservice.google.ga adservice.google.ge adservice.google.gg adservice.google.com.gh adservice.google.com.gi adservice.google.gl adservice.google.gm adservice.google.gr adservice.google.com.gt adservice.google.gy adservice.google.com.hk adservice.google.hn adservice.google.hr adservice.google.ht adservice.google.hu adservice.google.co.id adservice.google.ie adservice.google.co.il adservice.google.im adservice.google.co.in adservice.google.iq adservice.google.is adservice.google.it adservice.google.je adservice.google.com.jm adservice.google.jo adservice.google.co.jp adservice.google.co.ke adservice.google.com.kh adservice.google.ki adservice.google.kg adservice.google.co.kr adservice.google.com.kw adservice.google.kz adservice.google.la adservice.google.com.lb adservice.google.li adservice.google.lk adservice.google.co.ls adservice.google.lt adservice.google.lu adservice.google.lv adservice.google.com.ly adservice.google.co.ma adservice.google.md adservice.google.me adservice.google.mg adservice.google.mk adservice.google.ml adservice.google.com.mm adservice.google.mn adservice.google.ms adservice.google.com.mt adservice.google.mu adservice.google.mv adservice.google.mw adservice.google.com.mx adservice.google.com.my adservice.google.co.mz adservice.google.com.na adservice.google.com.ng adservice.google.com.ni adservice.google.ne adservice.google.nl adservice.google.no adservice.google.com.np adservice.google.nr adservice.google.nu adservice.google.co.nz adservice.google.com.om adservice.google.com.pa adservice.google.com.pe adservice.google.com.pg adservice.google.com.ph adservice.google.com.pk adservice.google.pl adservice.google.pn adservice.google.com.pr adservice.google.ps adservice.google.pt adservice.google.com.py adservice.google.com.qa adservice.google.ro adservice.google.ru adservice.google.rw adservice.google.com.sa adservice.google.com.sb adservice.google.sc adservice.google.se adservice.google.com.sg adservice.google.sh adservice.google.si adservice.google.sk adservice.google.com.sl adservice.google.sn adservice.google.so adservice.google.sm adservice.google.sr adservice.google.st adservice.google.com.sv adservice.google.td adservice.google.tg adservice.google.co.th adservice.google.com.tj adservice.google.tl adservice.google.tm adservice.google.tn adservice.google.to adservice.google.com.tr adservice.google.tt adservice.google.com.tw adservice.google.co.tz adservice.google.com.ua adservice.google.co.ug adservice.google.co.uk adservice.google.com.uy adservice.google.co.uz adservice.google.com.vc adservice.google.co.ve adservice.google.vg adservice.google.co.vi adservice.google.com.vn adservice.google.vu adservice.google.ws adservice.google.rs adservice.google.co.za adservice.google.co.zm adservice.google.co.zw adservice.google.cat;"
Header set Content-Security-Policy "connect-src https://pagead2.googlesyndication.com/getconfig/ 'self' https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com https://*.g.doubleclick.net https://*.google.com https://*.google.com;"
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header set X-Xss-Protection "1; mode=block"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-Content-Type-Options "nosniff"
Header set Referrer-Policy "strict-origin-when-cross-origin"
Header set Permissions-Policy "geolocation=self"
Header always edit Set-Cookie ^(.*)$ "$1; HttpOnly; Secure; SameSite=None"
</IfModule>

mod_headers 部分通常可以正常工作,因为当我将 script-src 或 img-src 设置为“none”时,网站将停止正常工作,停止加载脚本和图像,并且浏览器控制台中会显示错误。

如何让 Google Page Speed 识别我的 script-src 和 object-src 规则?

  • 尝试使用不同的浏览器运行 Google Page Speed -> CSP 警告不变
  • 尝试使用 Header set Content-Security-Policy "object-src 'none'" 而不是 Header set Content-Security-Policy "object-src 'none';" -> CSP 警告不变
.htaccess pagespeed csp
1个回答
0
投票

您似乎正在设置 8 个不同的 CSP 标头,每个指令一个。我假设扫描仪检测到未实现 script-src 的 CSP,即使总有效策略限制 script-src,扫描仪也无法理解您的设置。尝试组合指令

Header set Content-Security-Policy "upgrade-insecure-requests; object-src 'none'; block-all-mixed-content; frame-ancestors 'self';...

这也使得正确使用后备成为可能。

© www.soinside.com 2019 - 2024. All rights reserved.