1

現在、OWASP のトップ 10 のセキュリティ対策のほとんどを実装した J2EE システムがあります。現在、このアプリケーションでは、データベースに保存されているユーザーとパスワードの組み合わせでユーザーがログオンできます。

/*ユーザーのログイン状態を判断するために、セッションとセッション属性の存在を確認するためにマップされた Java フィルターがあります。

OK、最後に問題があります。特定のイベントが発生したときに GPRS 経由で URL 要求を送信するデバイスを製造する会社と統合しています。この URL はシステムへのリンクです。

私は (セキュリティを損なうことなく) この「デバイス」を認証したいと思います。デバイスに情報を送信することはできないため、単一の要求を認証する必要があり、誰もその URL を「再生」することはできません。

これが何らかの相互認証なしで可能かどうかはわかりません。チェックする IP アドレスのホワイトリストについて考えましたが、ネットワークは常に IP を変更し、デバイスはまだ「識別されていません」。アイデアを教えてください。

PS: 私の一時的な解決策はフィルターに例外を追加することでしたが、これは長期的ではなく、完全に安全ではありません。(SSLもオプションではありません)

4

2 に答える 2

4

デバイスに秘密鍵を使用して要求(一意の要求識別子を含む)に署名させることができます。次に、サーバーは署名が有効かどうかを確認し、有効な場合にのみ要求を受け入れ/応答できます。

リクエストIDを使用して、そのようなリクエストが再生されないようにすることができます。リクエストIDに単純なカウンターを使用すると、特定の識別子がすでに使用されているかどうか(つまり、リクエストが再生されているかどうか)を非常に簡単に確認できます。

于 2011-08-10T14:37:51.313 に答える
1

主な問題は、サードパーティがデバイスを入手した場合、デバイスに含まれる認証情報がサードパーティに利用可能になる可能性があることです。

したがって、主な質問は、(a)正確に何を認証するか(デバイス自体か、デバイスの所有者またはデバイスの場所か...)、および(b)デバイスがサポートできる機能(デバイスの種類)です。そしてそれが運用面で何ができるか。

デバイスが秘密鍵を保持し、抽出の試みに対抗するように設計されたスマートカードまたは暗号トークンを埋め込むことができる場合、デジタル署名はうまく機能します。

デバイスがメモリを保護できるが暗号化操作を実行できない(そしてスマートカードを埋め込むことができない)場合、デバイスごとに一意の、事前に計算されたワンタイムパスワードのリストを考えることができます。サーバーはグローバルリストのコピーを持ち、リストが使用されたらリストからパスワードを削除します。

于 2011-08-10T18:25:04.597 に答える