FastAPI でリクエスト レート制限を実装し、悪意のあるリクエストを防ぐ方法

WBOY
リリース: 2023-07-28 14:45:14
オリジナル
2010 人が閲覧しました

FastAPI でリクエスト レート制限を実装し、悪意のあるリクエストを防ぐ方法

はじめに: Web 開発では、リクエストが頻繁、悪意のあるリクエスト、またはリクエストが多すぎる状況によく遭遇します。これらの状況はサーバーにとって有害である可能性があります。ストレスやセキュリティ上のリスクさえも生み出します。 FastAPI では、リクエスト レート制限を実装し、悪意のあるリクエストを防止することで、サーバーの安定性とセキュリティを向上させることができます。この記事では、FastAPI でリクエスト レート制限を実装し、悪意のあるリクエストを防ぐ方法と、対応するコード例を紹介します。

1. リクエスト レート制限
リクエスト レート制限とは、リクエストの多すぎによるサーバーのクラッシュや頻繁なリクエストによるパフォーマンスの低下を防ぐために、クライアントのリクエストを制限し、リクエストの頻度と数を制限することを指します。リクエストはお断りします。 FastAPI では、fastapi-limiterライブラリを使用してリクエスト レート制限機能を実装できます。

  1. #依存ライブラリをインストールする

    pip install fastapi-limiter
    ログイン後にコピー

  2. #FastAPI アプリケーションにリクエスト レート制限ミドルウェアを追加する
  3. from fastapi import FastAPI from fastapi_limiter import FastAPILimiter app = FastAPI() @app.on_event("startup") async def startup_event(): # 设置请求速率限制,例如每分钟最多10个请求 await FastAPILimiter.init() @app.on_event("shutdown") async def shutdown_event(): # 关闭请求限速 await FastAPILimiter.shutdown() @app.get("/api/users") async def get_users(): return {"result": "success"}
    ログイン後にコピー

    # #上記のコードにより、1 分あたり最大 10 件の
  4. /api/users
リクエストを制限できます。制限を超えるリクエストは拒否されます。

2. 悪意のあるリクエストの防止悪意のあるリクエストの防止とは、サーバーへの攻撃を防ぐために悪意のあるリクエストを特定して拒否することを指します。 FastAPI では、

rebound

ライブラリを使用して、悪意のあるリクエストを防ぐ機能を実装できます。
#依存ライブラリをインストールする

pip install rebound
ログイン後にコピー
  1. #FastAPI アプリケーションでの悪意のあるリクエストを防ぐためにデコレータを追加する

    from fastapi import FastAPI from rebound.decorators import client_rate_limit app = FastAPI() @app.get("/api/users") @client_rate_limit(max_requests=10, interval_seconds=60) async def get_users(): return {"result": "success"}
    ログイン後にコピー

  2. 上記のコードにより、各クライアントが 60 秒以内に最大 10 件の

    /api/users

    リクエストを送信できるように制限できます。制限を超えるリクエストは拒否されます。
概要:

FastAPI が提供するミドルウェアとサードパーティ ライブラリを使用することで、リクエスト レート制限を簡単に実装し、悪意のあるリクエストを防ぐことができます。実際の Web 開発では、リクエスト レート制限や悪意のあるリクエストを防止する方法を、特定のシナリオやニーズに応じて適切に使用して、サーバーの安定性とセキュリティを向上させる必要があります。上記は、FastAPI でリクエスト レート制限を実装し、悪意のあるリクエストを防ぐ方法についての紹介です。

以上がFastAPI でリクエスト レート制限を実装し、悪意のあるリクエストを防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!