当前位置: 首页 > wzjs >正文

震旦网站谁做的有哪些平台网站是做废钢的

震旦网站谁做的,有哪些平台网站是做废钢的,wordpress免邮箱 注册,北京建设工程交易中心网API限流与暴力破解防护 1、暴力破解防护策略2、接口限流(Rate Limiting)3、分布式限流4、按用户 Token 限流5、验证码 在 FastAPI系列12:使用JWT 登录认证和RBAC 权限控制 和 FastAPI系列13:API的安全防护 两节中,我…

API限流与暴力破解防护

    • 1、暴力破解防护策略
    • 2、接口限流(Rate Limiting)
    • 3、分布式限流
    • 4、按用户 Token 限流
    • 5、验证码

在 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 {"message": "This endpoint is rate-limited"}

限流策略语法

  • “1/second”:每秒 1 次
  • “5/minute”:每分钟 5 次
  • “100/hour”:每小时 100 次

3、分布式限流

在上面示例的基础上,我们可以进一步配合使用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
from redis import Redis# 初始化 Redis 连接
redis_client = Redis(host='localhost', port=6379, db=0)# 初始化限流器,使用 Redis 存储
limiter = Limiter(key_func=get_remote_address, storage_uri="redis://localhost:6379")# 创建 FastAPI 应用
app = FastAPI()
app.state.limiter = limiter
app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)# 设置限流:同一 IP 每分钟最多访问 10 次
@app.get("/api")
@limiter.limit("10/minute")
def limited_api(request: Request):return {"message": "You are within the rate limit."}

4、按用户 Token 限流

在 FastAPI 中按用户 Token(如 JWT)限流,可以自定义 key_func,提取请求头中的用户标识作为限流键。以下是实现示例:

from fastapi import FastAPI, Request, Header, HTTPException
from slowapi import Limiter, _rate_limit_exceeded_handler
from slowapi.errors import RateLimitExceeded
from slowapi.util import get_remote_address
from starlette.responses import JSONResponse
import jwt  # 使用 PyJWT# 模拟解析 JWT(请替换为你自己的解析逻辑)
SECRET = "your-secret-key"
def get_user_id_from_token(authorization: str):try:token = authorization.split(" ")[1]payload = jwt.decode(token, SECRET, algorithms=["HS256"])return payload["sub"]  # 假设用户 ID 存在 sub 字段中except Exception:return "anonymous"  # 未登录用户或异常,统一使用默认限流键# 自定义限流 key 函数
def token_key_func(request: Request):auth = request.headers.get("Authorization")return get_user_id_from_token(auth) if auth else get_remote_address(request)# 初始化限流器
limiter = Limiter(key_func=token_key_func, storage_uri="redis://localhost:6379")# 初始化应用
app = FastAPI()
app.state.limiter = limiter
app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)# 接口限流(按用户 ID)
@app.get("/user-api")
@limiter.limit("5/minute")
def user_api(request: Request):return {"message": "You are within your user-specific rate limit."}

上面的示例可以实现:

  • 每个用户(Token)单独限流;
  • 未登录用户使用 IP 地址限流;
  • 支持 JWT、Session 或其他认证方式。

5、验证码

在 FastAPI 中可以使用captcha、Pillow实现图形验证码,以结合上面提到的限流技术实现对接口的暴力破解防护。当然要实现更大规模的防护能力时,往往需要借助第三方专业平台。
以下为利用captcha库实现的图形验证码:

from fastapi import FastAPI, Response
from captcha.image import ImageCaptcha
import random
import string
from io import BytesIOapp = FastAPI()@app.get("/captcha")
def get_captcha():image = ImageCaptcha(width=160, height=60)code = ''.join(random.choices(string.ascii_uppercase + string.digits, k=5))data = image.generate(code)# 存入 Redis 或 Session,供后续验证# redis.setex("captcha:client_ip", 300, code.lower())return Response(content=data.read(), media_type="image/png")

在实际使用中,我们需要把验证码文本(如 ABCD1)保存在服务端(如 Redis),并在登录时比对。


文章转载自:

http://6LD2yqMO.sftpg.cn
http://dGWeNNfs.sftpg.cn
http://Zbo2acKy.sftpg.cn
http://HqjzEens.sftpg.cn
http://ip0QIz7A.sftpg.cn
http://rZmvi6N4.sftpg.cn
http://lOKVSdIS.sftpg.cn
http://nKqlyB8m.sftpg.cn
http://tvMNlV9N.sftpg.cn
http://qSb1GMUk.sftpg.cn
http://ivwzlCSS.sftpg.cn
http://ldgUaICh.sftpg.cn
http://nLbR5eXo.sftpg.cn
http://9IuhZWaa.sftpg.cn
http://P91xgR0G.sftpg.cn
http://BoDT2q6R.sftpg.cn
http://SJY28xwr.sftpg.cn
http://jw7ZMgpj.sftpg.cn
http://Tj8S9vnN.sftpg.cn
http://CNGUZJhv.sftpg.cn
http://nrNcKpUy.sftpg.cn
http://UbcfDpSJ.sftpg.cn
http://W3khMxaW.sftpg.cn
http://eMETydE7.sftpg.cn
http://R6elzwah.sftpg.cn
http://5vqsKJv2.sftpg.cn
http://ZQXpMpNr.sftpg.cn
http://gECEdJuI.sftpg.cn
http://j3VOP2IQ.sftpg.cn
http://JWmSZbQQ.sftpg.cn
http://www.dtcms.com/wzjs/684174.html

相关文章:

  • 大连网站排名优化公司做视频教育网站
  • 企业vi设计与网站开发新能源电动汽车电池使用寿命多久
  • 网站建设和网页制作西安网站关键词推广
  • 仿唧唧帝笑话门户网站源码带多条采集规则 织梦搞笑图片视频模板做特产网站的原因
  • 本科电子商务专业就业方向怎么寻找网站关键词并优化
  • 电子商务网站建设用什么登录惠州网站制作案例
  • 杭州做网站的网络公司有哪些临沂网站建设哪家最好
  • 荥阳网站优化公司天元建设集团有限公司办公室电话
  • php网站开发目的小偷程序做的网站能用吗
  • 想弄个网站阿里云做网站怎么挣钱
  • 网页站点规划怎么用电脑做网站
  • 昆山网站房产网站开发文档
  • 郑州高端网站公司装饰装潢设计
  • 彭水网站建设酒店网络推广怎么做
  • h5个人网站源码做网站推广和网络推广
  • 福建住房和城乡建设网站中国国内网站建设哪家强
  • 做企业销售分析的网站库存管理软件免费版
  • 瑞安营销网站建设大连公司注册
  • 徐州建站网页建设公司的网站建设规划书
  • 网站备案主体是什么去掉wordpress分类
  • 如何自己做的网站网站还在建设中英文
  • 正规的app网站开发信誉楼线上商城小程序
  • 中国宣布取消新冠免费治疗沈阳seo关键词排名优化软件
  • 做淘客网站哪个cms好视频网站做游戏分发
  • 网站开发框架技术网站开发前端后端
  • 商品展示类网站源码书籍教你如何做网站
  • 网站设计方案大全如何把网站建设成营销型网站
  • 编制网站建设策划书沧州百胜信息技术有限公司
  • 永康企业网站建设wordpress做微信小程序
  • 萝岗区营销型网站建设网站建设互联