API限流与暴力破解防护
在 FastAPI系列12:使用JWT 登录认证和RBAC 权限控制 和 FastAPI系列13:API的安全防护 两节中,我们讨论了FastAPI中基本的安全防护技术,本节我们继续讨论API限流与暴力破解的防护。
1、暴力破解防护策略
“暴力破解”是一种常见的攻击手段,在针对web api攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。
一般情况下,针对“暴力破解”攻击,我们可以采用以下策略:
-
限流(Rate Limiting)
限制每个 IP、用户、接口单位时间内的访问频率,例如:登录接口每分钟最多 5 次。 -
验证码(Captcha)
登录失败次数多时要求验证,防止机器人攻击。
-
登录失败锁定机制
多次失败后暂时冻结账户或 IP。
2、接口限流(Rate Limiting)
在 FastAPI 中实现接口限流(Rate Limiting),常用方法是使用 slowapi 这个库,它基于 Starlette 和 Redis。以下是一个完整的实现过程:
from fastapi import FastAPI, Request
from slowapi import Limiter, _rate_limit_exceeded_handler
from slowapi.util import get_remote_address
from slowapi.errors import RateLimitExceeded
# 创建限流器
limiter = Limiter(key_func=get_remote_address)
# 创建应用
app = FastAPI()
app.state.limiter = limiter
app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)
# 应用限流装饰器(例如每分钟最多访问 5 次)
@app.get("/limited")
@limiter.limit("5/minute")
def limited_endpoint(request: Request):
return {


1020

被折叠的 条评论
为什么被折叠?



