現在、OWASPのトップ10のセキュリティ対策の大部分を実装しているJ2EEシステムがあります。アプリケーションは現時点で、ユーザがパスワードに保存されたユーザ/データベース。単一のURLリクエストに基づいてデバイス/ユーザを認証する
私は/*
にマップされたJavaフィルターを使用して、ユーザーのログイン状態を判別するセッションおよびセッション属性の有無を確認します。
最後に問題があります:特定のイベントが発生したときにGPRS経由でURLリクエストを送信するデバイスを製造する会社と統合しています。このURLはGoogleシステムへのリンクです。
この 'デバイス'を認証するのと同じように(セキュリティを犠牲にすることなく)、デバイスに情報を送信することはできないため、単一のリクエストを認証する必要はありません。そのURLを '再生'
何らかの相互認証なしにこれが可能かどうかわかりません。チェックするIPアドレスのホワイトリストについて考えましたが、ネットワークは常にIPを変更し、デバイスはまだ「未確認」です。何かアドバイスをお願いしますか?
PS:私の一時的な解決策は、フィルタに例外を追加することでしたが、これは長期的ではなく、完全に安全ではありません。 (SSLもオプションではありません)
+1 - 何らかの電子署名が役立つかもしれません。秘密鍵がデバイスに埋め込まれている場合、その秘密鍵をリバースエンジニアリングすることが可能な場合があることに注意してください。これは、すべてのデバイスが同じキーを共有する場合に特に悪いことです。 – Qwerky
ありがとう、私は本当に必要な場合、デバイスが受信することができますが、最悪の場合、それは最適ではないことを知っている私は知っている。私はあなたの答えを完全に理解していない、私はrequestID/counterを理解するが、署名する方法は理解していない。それは私がoAuthだった唯一のものが見つけられるGoogleのセッションに私を導いた。もっとヨアヒムを説明していただけますか? – epoch
@epochデジタル署名は、デバイスに格納された秘密鍵を使用して作成されます(非抽出可能であることが望ましい)。セッションIDは常に増分することができ、署名されます。サーバーは、(デバイスの識別子と署名に基づいて)特定のデバイスの最後に使用されたセッションIDを保持します。 –