paclakis / csp-middleware
为 PSR-7 请求添加 Content-Security-Policy 头。使用 csp-builder 库 paragonie/csp-builder。
1.0
2022-11-22 23:58 UTC
Requires
- php: ^8.1
- paragonie/csp-builder: ^2.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-23 03:40:15 UTC
README
CSP 中间件
使用 PSR-7 请求添加 Content-Security-Policy 头。使用 paragonie/csp-builder 包。
用法
添加中间件就像这样简单
$app->add(new \Pavlakis\Middleware\Csp\CspMiddleware($container->get('csp'));
其中 $container->get('csp')
返回一个带有 CSP 配置的 CSPBuilder
实例。
还有一个第二个参数 $reportOnly
。它是一个布尔值,默认设置为 true
,并将 CSP 头添加为 Content-Security-Policy-Report-Only
。这是非常重要的,以免你意外地破坏你的应用程序。
要启用它,传递 false
使用包含 csp 策略的 json
文件。
示例
{ "report-only": false, "report-uri": "/csp/enforce", "base-uri": [], "default-src": [], "child-src": { "self": false }, "connect-src": {}, "font-src": { "self": true }, "form-action": { "self": true }, "frame-ancestors": [], "img-src": { "self": true }, "media-src": [], "object-src": [], "plugin-types": [], "script-src": { "allow": [ "https://#" ], "self": true, "unsafe-inline": false, "unsafe-eval": false }, "style-src": { "self": true, "unsafe-inline": false }, "upgrade-insecure-requests": true }
在 Slim3 中的示例
依赖项(dependencies.php)
$container['csp'] = function ($c) { $csp = CSPBuilder::fromFile(__DIR__ . '/configs/csp.json'); return $csp; };
应用程序中间件(middleware.php)
$app->add(new \Pavlakis\Middleware\Csp\CspMiddleware($container->get('csp'));
资源
CSP 的有用资源