2016-07-27 24 views
0

私は、JavaサーブレットにHTTPリクエストを送信するIonicモバイルアプリケーションを作成しています。 HTTPリクエストURLにはユーザー情報が含まれており、バックエンドデータベースの更新に使用されます。しかし、私は、アプリケーションのユーザー以外の誰かが外部ソースからHTTPリクエストを送信するだけでデータベースを台無しにしないようにしたい。ユーザーは自分のアプリを使用するためにログインする必要はないので、アイデンティティの人々がリクエストを送信していることを確認できませんでした。私が今まで考えていた唯一の解決策はリクエストと共に鍵を送ることです。リクエストはサーブレットで検証されます。しかし、このハードコーディングされた方法は満足できるものではありません。何が良い方法だろうか?または、バックエンドに間違って接続していますか?私はすべての提案に開放されています。Javaサーブレットへのアクセスを制限する

答えて

1

ユーザーの資格情報を検証せずにデータを更新する場合は、ユーザーエージェントを変更してペイロード内の秘密鍵を盗み見るだけであるため、誰でも更新できます。接続の認証方法を理解する必要があります。たとえば、データの送信中にデータのハッシュを送信したり、アプリケーションのインストール時に生成する一意のキーで暗号化したり、生成されたユーザーIDを送信するなどして送信されます。あなたはインストール中にあなた。 DBに一意のキーを保持し、リクエストを受信するたびにデータをハッシュし、ハッシュと照合して、モバイルデバイスから送信されたことを確認します。

0

私の経験では、サーブレットのヘッダーにクライアントシークレットを送信してから、このシークレットが有効であることを確認することは、これを実行する良い方法です。

有効な秘密のリスト(複数のクライアントがある場合)を保存して、サーブレットに送信されたリクエストのヘッダーにヘッダーが含まれていることを確認できます。

また、通信を安全にしたい場合は、httpの代わりにhttps要求が使用されるようにする必要があります。それ以外の場合は、クライアントの秘密がプレーンテキストで送信されます。これにより、攻撃者は秘密を見て自分の要求に使うことが容易になります。

+1

静的秘密の問題は、そのうちの1つでも壊れてしまった場合、操作全体が脆弱になることです。その後、自分自身を安全にするためには、すべてのユーザーに強制的にキーを切り替える必要があります。これは通常、アプリを再インストールすることによって行われます。これは苦労です。そして、HTTPSが本当に必要ですが、決定された攻撃者はその周りに道を持っています。 –

関連する問題