unocha/ocha_security

安装: 253

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 4

分支: 0

开放问题: 0

类型:drupal-module

v1.0.1 2022-06-01 09:48 UTC

This package is auto-updated.

Last update: 2024-08-29 06:02:03 UTC


README

这主要是seckit模块的帮助程序。欢迎所有网站适用的更多安全相关修复。

CSP规则有点令人困惑。如果它们使情况更糟,请添加或改进这些说明。

Seckit模块帮助程序。

为登录用户准备散列或nonce,以允许脚本CSP保护。需要seckit模块,以及此补丁。注意,补丁可能很快就会被替换,请查看问题跟踪的状态。

这是必要的,以避免允许使用“eval”或“unsafe-inline”的规则,这些规则对于“script-src”会削弱使用seckit模块的意义。

请注意,如果包含nonce或散列,建议使用“unsafe-inline”,因为它将与CSP级别1浏览器一起工作,但将被CSP级别2浏览器忽略。不是最佳参考资料

对于登录用户,页面未缓存的请求,必须为每个请求生成一个nonce(仅使用一次的数字),但可用于所有脚本。

对于匿名用户,页面缓存的请求,必须为每个单独的脚本创建一个散列。内联脚本使用脚本的散列,附加文件使用文件名的散列。这些可以在请求之间重复使用。

这将为脚本元素、资产和附件添加散列或nonce,以及相同的CSP指令。

说明

@todo 找到一个资源来解释Drupal所说的“元素”、“资产”和“附件”的含义。

通过预渲染钩子添加nonce或创建散列以供脚本使用:元素(通过src/Element/OchaSecurityHtmlPreRender.php)资产src/Asset/OchaSecurityAssetResolver.php附件ocha_security_page_attachments_alter()

还确保了cookie的sameSite=Lax头,尽管在现代浏览器中这现在是默认行为src/Session/OchaSecuritySessionConfiguration.php

散列和nonce需要额外的工作——它们“仅适用于不能移除内联脚本的情况”(来源)。我们可能需要考虑只使用散列并将它们缓存。

'strict-dynamic'覆盖了seckit配置中允许的所有域名,但仅适用于实现了CSP-v3的浏览器。因此,对于所有脚本,都需要nonce或散列。