79 个版本 (33 个破坏性更新)

0.71.1 2024 年 8 月 18 日
0.70.0 2024 年 8 月 13 日
0.68.5 2024 年 7 月 9 日
0.66.2 2024 年 3 月 6 日
0.37.6 2022 年 11 月 29 日

#1314HTTP 服务器

Download history 103/week @ 2024-04-27 250/week @ 2024-05-04 65/week @ 2024-05-11 198/week @ 2024-05-18 282/week @ 2024-05-25 288/week @ 2024-06-01 196/week @ 2024-06-08 296/week @ 2024-06-15 220/week @ 2024-06-22 177/week @ 2024-06-29 154/week @ 2024-07-06 64/week @ 2024-07-13 50/week @ 2024-07-20 381/week @ 2024-07-27 183/week @ 2024-08-03 167/week @ 2024-08-10

788 次每月下载
3 个 包中使用

MIT/Apache

660KB
15K SLoC

salvo-session

Salvo 的会话管理

这是一个官方包,因此您可以在 Cargo.toml 中像这样启用它

salvo = { version = "*", features=["session"] }

文档 & 资源


lib.rs:

Salvo 会话支持

Salvo 会话中间件建立在 async-session 之上。

示例: session-login

会话允许 Salvo 在后续访问中安全地将数据附加到浏览器会话,以便检索和修改这些数据。会话数据通常仅在浏览器会话期间保留。

存储

强烈建议 Salvo 应用程序使用外部数据存储支持的会话存储。有关当前可用的会话存储列表,请参阅 async-session 的文档

安全性

尽管每个会话存储可能有不同的安全影响,但 Salvo 会话系统的通用方法如下:在每个请求中,Salvo 检查处理程序上的配置为 cookie_name 的 cookie。

生成一个密码学上随机的 cookie 值。在出站响应中设置一个 cookie,并使用在创建 SessionHandler 时提供的 secret 提取的 HKDF 密钥进行签名。可配置的会话存储使用 cookie 值的 SHA256 摘要并存储会话以及可能的过期时间。

使用从 HKDF 提取的签名密钥来验证 cookie 值的签名。如果验证通过,则将其传递给会话存储以检索会话。对于大多数会话存储,这将涉及获取 cookie 值的 SHA256 摘要并根据该摘要从外部数据存储检索序列化的会话。

过期

除了在会话cookie中设置过期时间外,salvo会话在序列化格式中也包含相同的过期时间。如果攻击者能够篡改cookie的过期时间,salvo会话在使用之前仍会检查所包含会话的过期时间。

如果上述过程出现任何问题

如果在上述会话检索过程中出现任何故障,将为请求生成一个新的空会话,该会话将按正常流程通过应用程序。

过时/过期会话清理

除了cookie存储之外的其他任何会话存储都将积累过时会话。尽管salvo会话处理器确保它们不会作为有效会话使用,但对于大多数会话存储而言,如果需要,salvo应用程序有责任在会话存储上调用清理操作。

了解更多: https://salvo.rs

依赖项

~23–37MB
~663K SLoC