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 在 配置
84 每月下载
在 product-os-server 中使用
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阅读最新的文档,因为这些文档可能不是最新的。