关于 rust-service-security
rust-service-security 是帮助开发者保护处理身份、会话、凭据或敏感数据的 Rust 服务的技能。它涵盖认证流程、密码处理、Cookie、路由保护和安全测试检查。
主要功能
- 01追踪完整认证流程
- 02防止机密信息进入日志和调试输出
- 03遵循密码存储与验证规则
- 04设置 Cookie 和会话保护措施
- 05通过中间件或提取器保护路由
- 06测试失败场景与会话行为
适用场景
- 01审查 Rust 登录或密码重置流程
- 02为特权路由添加认证
- 03审计 Cookie 和会话处理
- 04测试伪造令牌与注销行为
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ lvtd-llc/ skills --skill rust-service-security安装后在 Claude Code 中输入/rust-service-security确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/auth-middleware.mdcookies-sessions.mdpassword-auth.md详细介绍
Rust 服务安全
当 Rust 服务处理身份信息、凭据、会话、Cookie、受保护的路由或敏感用户数据时,使用此技能。优先进行明确的威胁检查和测试,而不是依赖乐观的处理器代码。
核心工作流
- 确定受保护的资产:账户访问权限、管理员区域、会话状态、密码更改、重置令牌、私密数据或特权操作。
- 追踪整个流程:请求解析、凭据查询、验证、会话变更、重定向/响应、日志和测试。
- 不要将密钥写入日志或调试输出。对密码、令牌、签名密钥和会话密钥使用密钥封装类型。
- 使用内存困难型算法执行密码哈希和验证,并将 CPU 密集型工作移出异步反应器线程。
- 防止用户枚举。登录失败和密码重置流程不应泄露账户是否存在。
- 有意设置 Cookie 和会话属性:
HttpOnly、Secure、SameSite、路径、生命周期、签名/加密和存储后端。 - 在中间件或提取器边界保护路由,而不是在每个处理器中重复进行临时检查。
- 为正常流程、身份验证失败、缺少会话、伪造的 Cookie 或令牌,以及注销/会话轮换行为添加测试。
密码规则
在实现或更改密码存储或验证之前,请阅读 references/password-auth.md。
- 存储由 Argon2id 或项目所选密码哈希器生成的 PHC 字符串;绝不存储明文密码或可逆加密的密码。
- 使用安全随机数生成器生成盐值。
- 对无效凭据使用一致且通用的响应。
- 使用
tokio::task::spawn_blocking或专用的阻塞操作抽象来执行开销较大的密码操作。 - 让密码哈希参数具备足够的可配置性,以便日后升级。
Cookie 和会话规则
在设置、读取、删除、签名或持久化 Cookie 和会话时,请阅读 references/cookies-sessions.md。
- 绝不要在 Cookie 中存储原始凭据。
- 对受保护的应用,优先使用由服务端存储支持的不透明会话 ID。
- 在登录和权限变更后轮换或续期会话状态。
- 使用服务端存储时,在注销时于服务端删除会话。
- 测试
Set-Cookie标头中的安全属性。
路由保护
在添加管理员路由、提取器、守卫或框架中间件时,请阅读 references/auth-middleware.md。
保持处理器类型明确:
pub async fn admin_dashboard(user: AuthenticatedUser) -> Result<HttpResponse, AppError> {
// Handler can assume authentication succeeded.
Ok(HttpResponse::Ok().finish())
}
对于要求身份验证的处理器,避免进行可选的用户查询;在框架允许的情况下,应通过处理器签名让用户缺失的情况变得不可能。
参考文件
references/password-auth.md:Argon2、PHC 字符串、用户枚举和阻塞式密码操作。references/cookies-sessions.md:Cookie 标志、签名消息、服务端会话和注销。references/auth-middleware.md:路由守卫、提取器和类型化会话访问。
评论
支持 Markdown