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 日 |
#1314 在 HTTP 服务器 中
788 次每月下载
在 3 个 包中使用
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 值。在出站响应中设置一个 cookie,并使用在创建 SessionHandler 时提供的 secret
提取的 HKDF 密钥进行签名。可配置的会话存储使用 cookie 值的 SHA256 摘要并存储会话以及可能的过期时间。
如果找到了 cookie
使用从 HKDF 提取的签名密钥来验证 cookie 值的签名。如果验证通过,则将其传递给会话存储以检索会话。对于大多数会话存储,这将涉及获取 cookie 值的 SHA256 摘要并根据该摘要从外部数据存储检索序列化的会话。
过期
除了在会话cookie中设置过期时间外,salvo会话在序列化格式中也包含相同的过期时间。如果攻击者能够篡改cookie的过期时间,salvo会话在使用之前仍会检查所包含会话的过期时间。
如果上述过程出现任何问题
如果在上述会话检索过程中出现任何故障,将为请求生成一个新的空会话,该会话将按正常流程通过应用程序。
过时/过期会话清理
除了cookie存储之外的其他任何会话存储都将积累过时会话。尽管salvo会话处理器确保它们不会作为有效会话使用,但对于大多数会话存储而言,如果需要,salvo应用程序有责任在会话存储上调用清理操作。
了解更多: https://salvo.rs
依赖项
~23–37MB
~663K SLoC