web-dev-qa-db-ja.com

Cloudflareで1つのキャッシュとREST APIを保護できますか?

単一ページのアプリケーションとネイティブモバイルアプリで使用することを目的としたRESTful APIを設計しています。このAPIの一部の呼び出しは、一定期間キャッシュできる公開結果を返します。さらに、許可されていないユーザー(スパイダー)からAPIを保護するためのレート保護が必要です。

Cloudflareを使用して、RESTful APIのキャッシングとレート制限/ DDOS保護を実装できますか?

Caching:Cloudflare HTTPキャッシュコントロールヘッダーをサポート APIは、GETを介してリクエストされたエンティティごとに、パブリックであるかどうか、およびキャッシュできる期間を決定できます。

  • しかし、キャッシュコントロールヘッダーもクライアントにダウンストリームに渡されるかどうかが明確ではないため、ブラウザが応答をキャッシュするようトリガーしますか?これはトラブルシューティングをより困難にする可能性があるため、望ましくない場合があります
  • Akamaiには Edge-Controlヘッダー があり、コンテンツはCDNにキャッシュされますが、ブラウザーにはキャッシュされません。 Cloudflareで同様のことができますか?

DDOS保護:Cloudflareサポートに記事があります バックエンドAPIに対してDDOS保護を無効にすることを推奨 ですが、これは各クライアントが使用されている私のユースケースには適用されませんAPIへのリクエストをほとんど行わないことになっています。ネイティブDDOS保護は、ボットからAPIを保護するための私の要件に実際に適合します。

  • CloudflareがCaptcha/にサービスを提供しているときにプログラムで検出する方法を知る必要がありますetc. pageこれにより、SPA /モバイルアプリがインテリジェントに反応し、ユーザーをWebビューにリダイレクトして、彼女が「人間らしさ」を示すことができます。

  • Cloudflareのドキュメントから、DDOSチャレンジが提示されたときにどのHTTPステータスコードが送信されるかは明らかではありません。 Cloudflare DDOS保護をバイパスするためのオープンソース cloudscraper は、CaptchaおよびチャレンジページがHTTPステータス200で配信されることを示しているようです。リクエストを解析するよりも良い方法はありますか? DDOS保護が作動したかどうかを確認するためのボディ

  • Cloudflare どうやらCookieを使用します は、Captchaを正常に解決した人を記録します。これにより、ネイティブアプリで明らかに複雑さが増します。 チャレンジが解決された後、CloudflareセッションCookieをネイティブアプリに戻す良い方法はありますか?

おそらくこれは高度なCloudflareの使用例の1つですが、これは有望であり、誰かが(Cloudflareまたは別のCDNで)このような経験を持っている場合は喜んで聞いてくれると思います。

33
flexponsive

Cloudflareは、APIで使用するための ベストプラクティスのリスト を公開しています。

TL; DR、すべてのAPIリクエストにパッチを適用するページルールを設定し、それに次の設定を加えることをお勧めします

  1. キャッシュレベル:バイパス
  2. 常にオンライン:オフ
  3. Webアプリケーションファイアウォール:オフ
  4. セキュリティレベル:「攻撃を受けています」以外のすべて
  5. ブラウザの整合性チェック:オフ
5
hoffm

はいCloudFlareはDDOS保護に役立ち、いいえAPIのキャッシングとレート制限を実装しません。あなたはそれらを自分で実装するか、そうするフレームワークを使用します。

CloudFlareをプロキシとして使用することにより、APIエンドポイントを保護するために使用できます。 CloudFlareは、ページルールを使用してAPIエンドポイントの設定を微調整できるURLビット全体を保護します。

Example: https://api.example.com/*
  • キャプチャを表示しないように、このルールのセキュリティを低または中程度に下げます。
  • APIは、認証とアクセスコードで保護するキャプチャを表示するためのものではありません。
  • ヘッダーにHTTP Strict Transport SecurityおよびAccess-Controlヘッダーを実装できます。
  • クラウドホスティングプロバイダー(DigitalOcean、Vultrなど)には、無料または有料のDDoS保護があります。パブリックVMだけでサブスクライブできます。これで、DDOSによる二重の保護が得られるので、これは大きなプラスになります。

キャッシュAPIの場合

Create a page rule like https://api.example.com/*.json
  • CloudFlareがサーバー上で特定の期間キャッシュをキャッシュするように、そのルールのキャッシュレベルを設定します。

APIを保護する方法は他にもたくさんあります。この回答が役に立ったと思いますか?

3
Sojimaxi