ContentSecurityPolicy

一个 Swift 库,用于定义 内容安全策略 (CSP) 标头值。


要求

安装

Swift Package Manager

将 ContentSecurityPolicy 包添加到您的目标依赖项中的 Package.swift 文件中

import PackageDescription

let package = Package(
  name: "YourProject",
  dependencies: [
    .package(
        url: "https://github.com/ReadEval/ContentSecurityPolicy",
        from: "0.0.1"
    ),
  ]
)

然后运行 swift build 命令来构建您的项目。

Carthage

要在您的 Xcode 项目中使用 Carthage 中的 ContentSecurityPolicy,请在 Cartfile 中指定它

github "ReadEval/ContentSecurityPolicy" ~> 0.0.1

然后运行 carthage update 命令来构建框架,并将构建的 ContentSecurityPolicy.framework 拖到您的 Xcode 项目中。

用法

使用指定的初始化器创建一个 ContentSecurityPolicy 对象;每个参数都有默认值,因此您可以仅指定与您的用例相关的指令

import ContentSecurityPolicy

let csp = ContentSecurityPolicy(
            defaultSrc: [.`self`],
            baseURI: URL(string: "https://readeval.press")!,
            upgradeInsecureRequests: true
          )
csp.policy
// default-src: 'self'; base-uri: https://readeval.press; upgrade-insecure-requests

您可以使用计算的 policy 属性值在 HTTP 响应头中设置 "Content-Security-Policy" 标头。以下是如何使用 Vapor 执行此操作的方法

import Vapor

let response = response ...
response.headers["Content-Security-Policy"] = csp.policy

许可

MIT

联系方式

Read Evaluate Press, LLC (@ReadEvalPress)