ホームページ  >  記事  >  バックエンド開発  >  PHP で書かれた API でのサービス拒否攻撃を防ぐにはどうすればよいですか?

PHP で書かれた API でのサービス拒否攻撃を防ぐにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-07-21 12:01:291195ブラウズ

現在、多くの企業は PHP を使用してフロントエンド Web/iOS/Android に接続するための API を作成しており、クラウドとエンドは完全に分離されており、動的なネゴシエーションを実現できません。双方が静的 KEY に同意すると、Web の JS では透過的になり、ios/android でもパッケージのインターセプトまたは逆コンパイルを通じてこの KEY を簡単に取得できます。
現在、一般的なクラウドサービスが許容できる同時実行数は数千までとなっており、サービス妨害攻撃により満杯になった場合、通常のユーザーのアクセスに影響が出るのは避けられません。特に WebSocket のような通信プロトコルを使用する場合、一度接続が確立されると、常に穴が占有されます。単純な複数行の模擬接続を作成して嫌がらせをしただけでは、基本的にサーバーは失敗します。
PHP 側でこのような攻撃を適切に防ぐにはどうすればよいですか?通常の小規模な用途では、麻痺を 10 分以内に制御することは、極端に行う必要はありません。

返信内容:

実際、質問者が指摘した問題は、次の 2 つの側面から言えます:

コードの側面:
プログラマーの経験。一般に、これはコードに関するブラック リストとホワイト リストであり、その後にインターフェイスのタイムアウトの処理が続き、残りはいくつかの仕様です。実際、特に良い経験はありません。より一般的に言えば、通常のハッカーはあなたを直接 DDOS 攻撃することはありません。本物の DDOS であれば、これらで十分です。 それは、日々のメンテナンスとデータの異常への対処に重点を置いています。

実際、悪意のある攻撃を受けることを心配する必要はありません。端的に言えば、インターフェイスも POST GET です。インターフェイス データをフィルタリングしてデータのセキュリティを確保している限り、一般的な脆弱性を防ぐことができます。 普通の三流ハッカーは基本的にこのドアをブロックします。 ウェブサイトがよほど有名でない限り、テストを行うセキュリティ会社を見つけることができます。基本的にOK DDoS 攻撃に対処するには、PHP で書かれた API インターフェースは一般にビジネス向けです。ビジネス向けの PHP でできることは、ハングアップせずにできるだけ早く対応することです。基本的に、マシンの負荷容量。この種の問題の場合、フロー制御を使用して、端末が一定期間内に特定の API にアクセスできる回数を制限する必要があります。 1. 認証インターフェイスはクライアントの時刻と署名を受け取ります。まず、クライアント時刻とサーバー時刻が特定の誤差範囲内 (±5 分など、誤差範囲が大きいほど安全性が低くなります) であることを確認し、次に署名が一貫しているかどうかを検証します (署名アルゴリズムはクライアント時刻を使用する必要があります)。 ) 成功後、トークンとランダムな文字列。
2. 認証インターフェースを除くすべてのインターフェースはトークンと署名を受け取る必要があります。まずトークンが正当かどうかを確認し、次に署名が一貫しているかどうかを確認します (署名アルゴリズムは認証インターフェイスから返されたランダムな文字列を使用する必要があります)。
3. すべてのインターフェースに対する戦略:
1) 署名検証が一定回数 (1 回、2 回、3 回、回数が多いほど安全性が低くなります) 失敗すると、IP はブロックされます。
2) 単一の IP コールが制限を超えた場合 (ビジネス ニーズに応じて、インターフェイスごとに異なる制限を設定することが最善です。たとえば、ログインを 1 日あたり 5 回要求できます)、IP をブロックします。 IPホワイトリスト あまりにも頻繁に発生すると、IP がブロックされます。 そんな面倒なことはせずに、iptablesを使用してください
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。