2 个不稳定版本
使用旧的 Rust 2015
0.2.0 | 2024年5月24日 |
---|---|
0.1.0 | 2024年5月19日 |
#1 in #slow
68 每月下载量
66KB
1.5K SLoC
safehttp
safehttp 是一个 Rust 的 HTTP/1.1 解析器,它慢速(但简单、安全且严格)。
与其他一些 Rust 的 HTTP 解析器不同,这个库侧重于安全性而不是性能。我们大多数人不需要高性能的亚微秒级 SIMD 启用的事件驱动零拷贝 HTTP 解析。我们都知道 HTTP 解析器存在漏洞 do exist。这个 crate 不使用任何不安全代码。
请在使用之前审查此代码。反馈和其他贡献非常受欢迎。
用法
此解析器使用 http
crate 中的(事实上的标准)类型。
[待办事项]
RFC 7230 兼容性
为了简单起见,此解析器不支持可选的和不常使用的 HTTP 功能,如块尾迹、块扩展或异类传输编码(除了 chunked
)。
此解析器尽可能严格:例如,拒绝非标准行结束(即不是 CRLF
)。
然而,此解析器旨在完全符合规范,并且应该与大多数用户代理无任何问题地工作。
模糊测试
待办事项
自动化测试
待办事项
HTTP/2 和 HTTP/3 支持
HTTP/2 目前不受支持,但将来可能添加。我实际上并不反对 HTTP/2,但它目前不如 HTTP/1.1 受欢迎,对于服务器来说,大多数客户端在升级之前都会发送 HTTP/1.1 请求。因此,无论如何都需要 HTTP/1.1 解析。
HTTP/3 与 HTTP/2 和 HTTP/1 有很大不同,因此最好在不同的库中支持它。
许可证
safehttp 主要在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。有关详细信息,请参阅 LICENSE-APACHE 和 LICENSE-MIT。
可能的改进
-
编写更多测试。虽然有一些测试,但总是更好的。
-
值得用 nom 重写解析器。当前实现的前瞻性并不特别美观,但这将添加一个依赖...
依赖项
~625KB
~10K SLoC