5个版本

0.2.2 2024年1月12日
0.2.1 2024年1月11日
0.2.0 2024年1月11日
0.1.1 2024年1月11日
0.1.0 2024年1月11日

#3#csrf

每月48次下载

CC0-1.0 OR Apache-2.0

20KB
361

origin_check

Crates.io Version docs.rs GitHub Actions Workflow Status

一个用于减轻CSRF攻击的Tower最小化中间件层。

检查传入请求的“Origin”或“Referer”头部,并将其与目标“Host”和“URI”进行比较。

let (mock_service, _) = tower_test::mock::spawn::<http::Request<()>, ()>();
let csrf_proof_service = origin_check::OriginCheck::new(mock_service);

重要注意事项

此包做出了一些假设,必须全部为真才能成为您的最佳选择:

  1. 您的站点仅在“安全上下文”中访问,例如通过https或在localhost上。
  2. 状态更改在响应GETHEAD请求时永远不会执行。此类请求无论CSRF指标如何,此服务都始终允许
  3. 如果“Origin”或“Referer”的域名和端口与“Host”不完全匹配,则所有其他请求应失败。这意味着您不能,例如,从一个子域向另一个子域发送POST请求,或从端口到端口。
  4. 当请求由您的站点发起时,您的用户的浏览器将在非GET/-HEAD请求上设置“Origin”或“Referer”头部。为了确保这一点,请注意您的站点的“Referrer-Policy”不是设置为“no-referrer”。

您可能希望为任何身份验证cookie设置SameSite=StrictSameSite=Lax,以作为CSRF的额外保护。

您可能还希望默认情况下为您的站点设置X-Frame-Options: DENY,以防止点击劫持,这是一个与CSRF相关但不同的问题。

依赖项

~1.5–2MB
~42K SLoC