1

現在、私のアプリケーションでは、ユーザーのCookieはuserIDを含む特定の形式で生成されます。ログインするたびにCookieがランダムに生成されるようにしたいので、一度Cookieが盗まれたとしても、ハッカーがCookieを永久に使用することはありません。

この方法でCookieを処理するためのベストプラクティスは何ですか?それらをどのように保存/取得する必要がありますか(ハッシュテーブル/データストア...)?

ありがとう

4

3 に答える 3

3

HttpSessionGAE/Jがサポートして いる組み込みのJavaセッションオブジェクトを使用することをお勧めします。GAEでセッションを有効にする方法に関するドキュメントについては、こちらをご覧ください。

セッションを一定期間後に期限切れにするように設定することも、セッションに番号を保存して外部でセッションを確認することもできます。

于 2012-02-09T01:58:18.573 に答える
2

次のパラメータを試すことができます。

  • ユーザーID
  • 存続時間(ミリ秒)
  • のハッシュ:
    • ユーザーのパスワード
    • ユーザーID
    • リモートIPまたはブラウザ
    • 存続時間(以前とまったく同じ)
    • 事前定義された文字列またはソルト

それを(のような)1つの文字列に結合し13413:1826271762:b026324c6904b2a9cb4b88d6d61c81d1、のようなCookieに保存しUSERIDます。

必要なすべてのリクエストで:

  • 指定された時間が有効であることを確認してください(現在よりも短い)
  • 指定されたIDでデータベースからユーザーをロードします
  • ハッシュ署名を検証します(現在のリモートIP /ブラウザーおよび現在のパスワードに対して)
于 2012-02-09T05:55:43.567 に答える
2

私はリックに同意します。コンテナ設計者は、リクエストが同じユーザーからのものであり、車輪の再発明をしたくないかどうかを確認するという汚い仕事をしましたか?

HttpSession session = request.getSession(); 

これにより、新しいセッションがまだ存在しない場合は作成されますが、存在する場合は既存のセッションが取得されます。

session.setAttribute('key', value);

値は任意のシリアル化可能なPOJOであり、キーは文字列です。次のコードを使用して、アプリケーションのスコープ内に保存されている値を取得できます。

Object value = (Object) session.getAttribute('key');

セッションの使用方法の詳細については、HttpSessionsのJava仕様を確認してください。

于 2012-02-11T16:31:11.823 に答える