FastAPI系列教程14:API限流与暴力破解防护


FastAPI系列12:使用JWT 登录认证和RBAC 权限控制FastAPI系列13:API的安全防护 两节中,我们讨论了FastAPI中基本的安全防护技术,本节我们继续讨论API限流与暴力破解的防护。

1、暴力破解防护策略

“暴力破解”是一种常见的攻击手段,在针对web api攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。
一般情况下,针对“暴力破解”攻击,我们可以采用以下策略:

  1. 限流(Rate Limiting)
    限制每个 IP、用户、接口单位时间内的访问频率,例如:登录接口每分钟最多 5 次。

  2. 验证码(Captcha)

    登录失败次数多时要求验证,防止机器人攻击。

  3. 登录失败锁定机制

    多次失败后暂时冻结账户或 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 {
   
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值