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 • Rust 包仓库 43/week @ 2024-03-13 • Rust 包仓库 47/week @ 2024-03-20 • Rust 包仓库 60/week @ 2024-03-27 • Rust 包仓库 52/week @ 2024-04-03 • Rust 包仓库 3/week @ 2024-04-10 • Rust 包仓库 7/week @ 2024-04-17 • Rust 包仓库 19/week @ 2024-04-24 • Rust 包仓库 33/week @ 2024-05-01 • Rust 包仓库 13/week @ 2024-05-08 • Rust 包仓库 18/week @ 2024-05-15 • Rust 包仓库 9/week @ 2024-05-22 • Rust 包仓库 21/week @ 2024-05-29 • Rust 包仓库 16/week @ 2024-06-05 • Rust 包仓库 24/week @ 2024-06-12 • Rust 包仓库 13/week @ 2024-06-19 • Rust 包仓库 29/week @ 2024-06-26 • Rust 包仓库

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阅读最新的文档,因为这些文档可能不是最新的。

没有运行时依赖项