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次下载
20KB
361 行
origin_check
一个用于减轻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);
重要注意事项
此包做出了一些假设,必须全部为真才能成为您的最佳选择:
- 您的站点仅在“安全上下文”中访问,例如通过
https
或在localhost
上。 - 状态更改在响应
GET
或HEAD
请求时永远不会执行。此类请求无论CSRF指标如何,此服务都始终允许。 - 如果“Origin”或“Referer”的域名和端口与“Host”不完全匹配,则所有其他请求应失败。这意味着您不能,例如,从一个子域向另一个子域发送POST请求,或从端口到端口。
- 当请求由您的站点发起时,您的用户的浏览器将在非
GET
/-HEAD
请求上设置“Origin”或“Referer”头部。为了确保这一点,请注意您的站点的“Referrer-Policy”不是设置为“no-referrer”。
您可能希望为任何身份验证cookie设置SameSite=Strict
或SameSite=Lax
,以作为CSRF的额外保护。
您可能还希望默认情况下为您的站点设置X-Frame-Options: DENY
,以防止点击劫持,这是一个与CSRF相关但不同的问题。
依赖项
~1.5–2MB
~42K SLoC