セキュアな外部インタフェースを設計するには?(RPM)を

  個人的に私は、主に二つの面でセキュリティ対策の一般的な図は、一方が送信中のデータのセキュリティを確保する方法であり、他の態様は、サーバ側識別データは、どのようにしない攻撃される方法、データが到着したサーバー側であることを感じ、以下の特定のどのようなセキュリティ対策を見てください。

1.データの暗号化

  私たちは、送信処理中のデータが捕まることは非常に簡単であることを知って、そして、そのような直接伝送た場合、ユーザデータの伝送は、すべての人のhttpプロトコルによって取得することができ、それは、データの暗号化のために必要である、などのユーザーとして、暗号化キーフィールドに共通のアプローチを直接通じMD5パスワードの暗号化は、今主流の練習がhttpsプロトコルを使用することで、HTTPとTCPの間の暗号化レイヤ(SSL層)の層を追加し、この層は、データの暗号化と復号化に責任があります。

2.データの裏書

  あなたが尋ねるかもしれないデータ、そこHTTPS暗号化により承認を必要としていた場合は、データの承認は、一部には、データが伝送中に改ざんされていないことを保証するために、数字の文字列を送信者によって偽造することはできません生成するのですか?データは理論的には、送信処理に巻き込まれる場合でも、暗号化され、データが改ざんすることはできません。しかし、我々は、暗号化を知りたい外部ネットワークの一部でしかありませんし、今のネットワークサービスなど、多くのサービスはとても、ジャンプの多くを通過する必要がありますここでの承認は、改ざんされているから、ネットワークデータ内に防止することができます。

3.タイムスタンプ

  実際のデータを気にしますが、直接キャプチャしたデータを得ることはありませんが、不謹慎な人が存在し、データが非常に簡単に巻き込まれることですが、暗号化、承認処理などの後、データはさらに、実際のデータを見ることができません悪意のあるリクエストパケット、機構は、この時点で使用することができるスタンプは、現在時刻を各要求に追加され、サーバは、現在時刻を取得し、例えば5などの範囲内で一定時間かどうかを確認するメッセージを減算します時間内で変更することはできませんので、要求は違法であると考えられて5分後に、パケットなどの悪質な要求;数分以内に

4.AppIdメカニズム

  私のウェブサイトを使用することはできません基本的にログインするためのユーザー名とパスワードが必要ですほとんどのサイトが、それはまた、セキュリティ・メカニズムであり、両方とも、実際に必要なメカニズムを提供するためのインタフェースに対応し、誰もが呼び出すことができます、ユーザインターフェースは背景のAppID、ユーザに提供される関連するキーを開く必要を必要とAPPID +キーを提供する必要性によって呼び出されるインターフェースは、関連するサーバは、検証されます。

制限機構

  それは常に、実際の利用者となって、そしてAPPID開いたが、状況が頻繁に呼び出しインタフェースを表示されています。このような状況は、関連APPIDに処理を制限する必要があり、一般的に使用されるアルゴリズムは、トークンバケットを制限し、リーキーバケットアルゴリズムされています。

6.ブラックリストメカニズム

  このAPPIDは、多くの不正操作を行った場合、又は黒色に特別なシステムが存在することをこの解析は直接ブラックリストのAppID後、すべての要求を直接エラーコードを返します。

データの正当性を確認する7.

  これは、データ処理の状況下で合法的である前に、各システムは、機構を処理するためのデータだけを有するであろうということができ、各システムは、独自の検証ルールを有し、もちろん、そのようなIDカードなどのいくつかのルーチンのルールがあってもよいです電話番号等の長さおよび組成、長さおよび組成。

どのように達成するために

  いくつかの一般的なインターフェイスのセキュリティ対策に関する一般的な導入は、もちろん、私は道を知らない他があるかもしれない、私たちはどのように達成するために具体的には、これらの対策を参照するには、以下のメソッドを追加したいと考えています。

1.データの暗号化

対称暗号化と非対称暗号化主流の暗号化があります。

対称暗号化:対称鍵暗号化と復号化プロセスで使用される鍵は、共通の対称暗号化アルゴリズムは、DES、AESである同じである高速計算の利点、欠点は、データの送信、送信者と受信者の必須の前にあります鍵の一つは、その後、暗号化された情報も安全ではないが侵害された場合、キーの契約は、その後、両側には、その秘密鍵を維持することができます。

非対称暗号化:;あまりにも多くの暗号化と復号化の速度が遅く、対称暗号化よりも利点が対称暗号化よりも安全ですが、サーバーがキーのペアを生成し、秘密鍵はサーバ側に保存され、公開鍵は使用に誰のために公開することができます;広くRSAアルゴリズムを使用します。

二つの方法にも長所と短所があり、およびhttps実装は2つの暗号化、両側の利点の統合の組み合わせであることを起こる、安全性と性能の面で優れています。

対称暗号化と非対称暗号化コードの実装、JDKクラスは、関連ツールを直接使用することができ提供するが、本明細書でさらに説明。

2.データの裏書

パケットの署名データは、データが特定の組み合わせの文字列によって提出される必要がある、より多くのMD5アルゴリズムを使用し、暗号化されたMD5を介して文字列を生成し、この署名が暗号化された文字列は、単純な外観であってもよいです例:

str:参数1={参数1}&参数2={参数2}&……&参数n={参数n}$key={用户密钥};
MD5.encrypt(str);

注最後のユーザキー、クライアントとサーバがコピーを持っていること、それがより安全になります。

3.タイムスタンプ

復号化されたデータは、署名検証の後、我々は、現在時刻にサーバーマイナスクライアント時間は、セクション、次の擬似コードで結果かどうかを確認するために、パケット内のクライアントのタイムスタンプフィールドを取得します:

long interval=5*60*1000;//超时时间
long clientTime=request.getparameter("clientTime");
long serverTime=System.currentTimeMillis();
if(serverTime-clientTime>interval){
return new Response("超过处理时长")
}

4.AppIdメカニズム

AppIDの一意のキー文字、数字、その他の特殊文字をランダムに生成することができます生成するために、実際の状況に応じてグローバルにユニークな独特のAppIDを生成する必要を参照してください。しかし、かどうかは、生成された最高のグローバルに一意なIdは以下の属性を持っていることを確認するために:

  • トレンドの増分:、より良いインデックスのパフォーマンスの使用をデータベースを保存するように。

  • 情報セキュリティは:法律を見つけることは容易で、連続していないお試しください。

  • クラススノーフレークメソッドを持ってグローバルにユニークなIDを生成するのに約一般的な方法。

制限機構

限定的なアルゴリズムは、一般的に含まれる令牌桶限流:使用されます漏桶限流计数器限流;、

  トークンバケットは制限:トークンバケットアルゴリズムの原理は、トークンを埋めるためにトークンバケットが破棄された速度でシステムに配置され、その大きさならば、起動要求時にトークンバケットを削除しますトークンは、その要求を満たす、または待つか、サービス拒否し続けることができ、トークンバケットは限りトークン缶ハンドルとして、バーストトラフィックの特定の程度を可能にする、複数のトークンをサポートするために時間がかかります。

  2.リーキーバケットリストリクタ:リーキー・バケット原理は要求の数は、ドラムの容量を超えた場合に、固定定数流出レート要求、任意の要求の流入の速度で、又はサービスを待って新たな要求を拒否し、リーキーバケットアルゴリズムは力ことがわかりますデータ伝送速度を制限します。

  3.制限カウンタ:カウンタは、比較的単純で粗アルゴリズムは、同時データベース接続プール、スレッドプール、スパイクの数として、同時の総数を制限するために使用されている。限り、複数の対の流量制限器に配置さを超えるような一定期間内の要求の総数制限所与の閾値が行われます。

どのように上記のアルゴリズムに特に基づいて、グアバは、トークンバケットアルゴリズムに基づいてRateLimiterツールを提供しています。

RateLimiter rateLimiter = RateLimiter.create(5);

この時間必要分散流量制限器は、Redisの+ LUAに基づいて実装されてもよい。第二のコードは、上記のプロセスは、単一のアプリケーションフロー制限はなく、全流量の制限のみを使用することができる上記の方法を要求し、5つだけの同時要求を許可示します。

6.ブラックリストメカニズム

初期化状態、ノーマル状態、黒状態、閉じた状態とそうで;または私たちは直接ブラックリストの保存、直接中心を通って設定を分散:なぜ我々の側については説明しませんか黒で、我々は、例えば含め、各ユーザーにステータスを設定することができますリストには、各リストかどうかを確認することができます。

データの正当性を確認する7.

合法性の確認は、次のとおりです。日常点検や校正サービスを。

ルーチン検査:署名検証、検証に必要な検証の長さ、型チェック、等チェックフォーマットを含むが、

ビジネスチェック:実際のトラフィックなど、0以上の注文量などに応じて、

 

おすすめ

転載: www.cnblogs.com/myseries/p/12050459.html