2016-10-01 6 views
0

アプリケーションにはフロントエンドとバックエンドのモジュールがあり、フロントエンド呼び出しはJava/Springで書かれたバックエンドからサービスを受け取ります。 フロントエンドではない悪意のある要求を検出する方法がありますか(一部のユーザーが、クライアントを経由して直接バックエンドからサービスにコールしようとした場合)リクエストを検出/検証する悪意のある要求

フロントエンドのリクエストごとにハッシュ値を生成し、バックエンドでこの値を復号化してこのリクエストを検証することはありますか?

答えて

0

必要なものは認証です。バックエンドは、フロントエンドWebアプリケーションまたはユーザー自身のどちらかを認証する必要があります。

おそらく、最も一般的な方法は、フロントエンドとバックエンドが共有秘密を持つことを実際に意味するフロントエンドを認証することです。認証は各呼び出しで行われ、バックエンドはフロントエンドを信頼します。これは、http基本認証(https以上)からapiキーメカニズム(署名リクエストなど)まで、無数の方法で達成できます。ユースケースと脅威モデルに応じて、ホイールを再開発する必要はありません。 HTTPの基本認証がhttpsで十分であるかもしれません。

もう1つの方法は、ユーザーの資格情報をバックエンドサービスに委任することです。これは、ユーザーからバックエンドにシングルサインオントークンを渡すことで実現され、フロントエンドがバックエンドサービスを呼び出すときに効果的にユーザーを偽装します。おそらく、これはより安全です。たとえば、Webとアプリの間にそのレベルの信頼は必要ありませんが、サービスは引き続きトークンを発行したSSOコンポーネントを信頼する必要があります。要点は、敵対者が盗む秘密がないことです(フロントエンドサーバーからは除外されますが、これは簡単なターゲットかもしれません)。攻撃者がバックエンドサービスへの要求を発行することは難しいかもしれません。フロントエンドサーバはすでに侵害されています。

ここでの答えは、この認証をどのように正確に行うかについての詳細な説明ではないと思いますが(実際には複数の良い解決策があり、いずれの場合でも実装の詳細は非常に重要です)、少なくとも概念的にはこれらは私が思うあなたの選択肢です。

+0

返信いただきありがとうございますが、アプリケーションにはすでに認証サービスと認証サービスがあります。 –

+0

それからどういう疑問がありますか?認証と認可の目的は、発信者が誰であるかを確認し、許可された発信者にのみアクションを実行させることです。これはバックエンドサービスだけでなく、フロントエンドアプリにも適用されます。 –

関連する問題