#安全策略 #辅助工具 #内容 #指令 #来源 #推送 #内容安全策略

csp

一个小型内容安全策略创建辅助工具

4 个版本 (稳定)

2.0.0 2023年10月24日
1.1.0 2022年10月2日
1.0.1 2022年9月12日
0.1.0 2019年12月18日

#218配置

Download history 43/week @ 2024-03-13 47/week @ 2024-03-20 60/week @ 2024-03-27 52/week @ 2024-04-03 3/week @ 2024-04-10 7/week @ 2024-04-17 19/week @ 2024-04-24 33/week @ 2024-05-01 13/week @ 2024-05-08 18/week @ 2024-05-15 9/week @ 2024-05-22 21/week @ 2024-05-29 16/week @ 2024-06-05 24/week @ 2024-06-12 13/week @ 2024-06-19 29/week @ 2024-06-26

84 每月下载
product-os-server 中使用

MIT 许可证

38KB
495

CSP-rs

这是一个非常小的Rust crate,用于在创建内容安全策略字符串时避免输入错误。

欢迎任何改进它的贡献,但请注意,这个crate的目标是非常简洁的,没有依赖项。它应该足够简单,以至于任何决定使用这个crate的人都可以在需要时自己维护它。


lib.rs:

这个crate是一个帮助快速构建CSP并将其转换为String的辅助工具。

这个库可以帮助你当你不想记住CSP的一些奇怪的格式化规则,并且想要避免输入错误时。如果你需要重用某些内容(例如源列表),这当然很有用(只需将它们克隆到任何地方即可)!

警告:这个库不关心你是否创建了无效的CSP规则,并且会欣然接受它们并将它们转换为String。但是,它强制你使用类型化的结构,因此它比手动编写CSP更难出错。这个crate的另一件事是:它不做任何base64或percent编码或类似的事情。

示例用法

use csp::{CSP, Directive, Sources, Source};

let csp = CSP::new()
  .push(Directive::ImgSrc(
    Sources::new_with(Source::Self_)
      .push(Source::Host("https://*.example.org"))
      .push(Source::Host("https://shieldsio.npmjs.net.cn")),
  ))
  .push(Directive::ConnectSrc(
    Sources::new()
      .push(Source::Host("http://crates.io"))
      .push(Source::Scheme("https"))
      .push(Source::Self_),
  ))
  .push(Directive::StyleSrc(
    Sources::new_with(Source::Self_).push(Source::UnsafeInline),
  ))
  .push(Directive::ObjectSrc(Sources::new()));

let csp_header = "Content-Security-Policy: ".to_owned() + &csp.to_string();

此crate文档的版权声明

大部分关于各种CSP的注释来自 MDN,因此它们根据 CC-BY-SA 2.5 许可。因此,大部分文档的归属归功于 Mozilla贡献者

请访问MDN阅读最新的文档,因为这些文档可能不是最新的。

没有运行时依赖项