paclakis/csp-middleware

为 PSR-7 请求添加 Content-Security-Policy 头。使用 csp-builder 库 paragonie/csp-builder。

1.0 2022-11-22 23:58 UTC

This package is auto-updated.

Last update: 2024-09-23 03:40:15 UTC


README

Build Status Total Downloads Latest Stable Version codecov

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 的有用资源