s1syphos/kirby-sri

该包已废弃,不再维护。未建议替代包。

为 Kirby 提供的子资源完整性哈希和缓存破坏静态资源

安装: 10

依赖: 0

建议者: 0

安全: 0

星标: 12

关注者: 2

分支: 5

开放问题: 0

类型:kirby-plugin

0.7.0 2018-03-16 10:36 UTC

This package is auto-updated.

Last update: 2021-12-17 15:40:05 UTC


README

Release License Issues

此插件根据 CSS / JS 文件的内容生成基于 base64 编码的加密哈希,并将它们添加到相应的 <link><script> 元素的 integrity 属性中。它还应用缓存破坏/指纹

目录

什么是 SRI?

"子资源完整性 (SRI) 是一个安全功能,允许浏览器验证他们获取的文件(例如,从 CDN)是否在传输过程中未被意外篡改。它通过允许您提供一个加密哈希来实现,该哈希必须与获取的文件匹配。"

来源:Mozilla 开发者网络

输入 kirby-sri:Kirby 端生成的 SRI 哈希,用于更安全的 CDN 使用。有关 CDN 集成和 Kirby 的更多信息,请参阅文档或 Kirb 的合作伙伴KeyCDN以开始。

screenshot of the kirby-sri plugin

此插件仅提供哈希生成。 对于与 CDNs 一起使用,请参阅 Kirby 的官方 cdn-plugin

入门

使用以下方法之一安装并使用 kirby-sri

Git 子模块

如果您熟悉 Git,可以将此插件作为子模块下载。

git submodule add https://github.com/S1SYPHOS/kirby-sri.git site/plugins/kirby-sri

Composer

composer require S1SYPHOS/kirby-sri

克隆或下载

  1. 克隆下载此存储库。
  2. 解压/将文件夹移动到 site/plugins

确保文件夹名为 kirby-sri

激活插件

在您的 config.php 中使用以下行来激活插件

c::set('plugin.kirby-sri', true);

Kirby 的内置助手函数 css()js() 现在将包含一个与匹配的 SRI 哈希一起的 integrity 属性。如果您只想在特定域上激活 kirby-sri,请参阅多环境设置

配置

修改 kirby-sri 选项以适应您的需求

选项 类型 默认值 描述
plugin.kirby-sri.algorithm 字符串 sha512 定义加密的哈希算法(目前允许的前缀有 sha256sha384sha512)。
plugin.kirby-sri.crossorigin 字符串 匿名 定义crossorigin 属性
plugin.kirby-sri.fingerprinting 布尔值 true 可选地启用/禁用指纹识别。

缓存清除/指纹识别

与往常一样。如果有人提出解决方案,如何通过不同的插件实现子资源完整性以及缓存清除/指纹识别(因为所有这些插件都修改了 Kirby 内置的辅助函数 css()js()),请随意提交 PR!否则,请按照以下步骤操作

Apache

如果您使用 Apache 作为您的 Web 服务器,请将以下行添加到您的 .htaccess 文件中(在 RewriteBase 之后)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.([0-9]{10})\.(js|css)$ $1.$3 [L]

NGINX

如果您使用 NGINX 作为您的 Web 服务器,请将以下行添加到您的虚拟主机配置中

location /assets {
  if (!-e $request_filename) {
    rewrite "^/(.+)\.([0-9]{10})\.(js|css)$" /$1.$3 break;
  }
}

注意:SRI 哈希生成和缓存清除不适用于外部 URL!

请务必安全使用 - 使用保护措施!

始终使用 https:// URLs 来加载来自 CDN 的子资源,否则它们可能会被阻止

当初始 HTML 通过安全的 HTTPS 连接加载,但其他资源(如图片、视频、样式表、脚本)通过不安全的 HTTP 连接加载时,会发生混合内容。这被称为混合内容,因为 HTTP 和 HTTPS 内容都被加载来显示同一页面,并且初始请求是通过 HTTPS 安全的。现代浏览器会显示有关此类内容的警告,以提示用户该页面包含不安全资源。Google 开发者

致谢/许可证

kirby-sri 受到 Kirby 插件 cachebuster(由 Kirby 团队成员 Bastian AllgeierLukas Bestle)以及 fingerprint(由 Iksi)的启发。它遵循MIT 许可证,但 在生产中使用 Kirby 需要您购买许可证。您准备好下一步了吗?

特别感谢

我想感谢所有制作优秀软件的人 - 你们很棒。我还总是感谢反馈和错误报告:)