問題タブ [remember-me]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
310685 参照

security - ウェブサイトに「remember me」を実装する最良の方法は何ですか?

Web サイトにアクセスするたびにログインする必要がないように、ユーザーがクリックできるチェックボックスを Web サイトに追加したいと考えています。これを実装するには、コンピューターに Cookie を保存する必要があることはわかっていますが、その Cookie には何が含まれている必要がありますか?

また、この Cookie がセキュリティの脆弱性を示さないようにするために注意すべきよくある間違いはありますか?

0 投票する
2 に答える
2091 参照

php - PHP での認証の最良の方法

モデル ビュー コントローラーの方法で認証ライブラリを作成する場合、最善かつ最も安全な方法は何ですか?

私が苦労しているのは、ユーザーのアクティビティを追跡し、Cookie を介してユーザーを記憶したり、データベースにセッションを保存したりすることですか?

前もって感謝します :)。

0 投票する
13 に答える
55547 参照

php - Cookie の暗号化に最適な暗号化アルゴリズムは何ですか?

この質問はかなり人気があるので、更新すると便利だと思いました。

この質問に対する AviDの正しい答えを強調させてください。

暗号化が必要なデータを Cookie に保存しないでください。代わりに、適切なサイズ (128 ビット/16 バイト) のランダム キーを Cookie に格納し、Cookie のキーによって識別される、サーバー上で安全に保ちたい情報を格納します。



Cookie を暗号化するための「最適な」暗号化アルゴリズムに関する情報を探しています。

次の要件があります。


  • データの暗号化と復号化は、(ほぼ)すべてのリクエストに対して高速である必要があります

  • 小さなデータセット、通常は約 100 文字以下の文字列で動作します。

  • 安全でなければなりませんが、銀行取引を保護しているわけではありません

  • SHA1などが出ないように、情報を解読できる必要があります。

ここで、Blowfish が高速で安全であることを読み、AES が高速で安全であることを読みました。ふぐの方がブロックサイズが小さい。

どちらのアルゴリズムも十分以上のセキュリティを提供すると思いますか? したがって、速度が決定的な要因になります。しかし、それらのアルゴリズムが小さな文字列に適しているかどうか、また Cookie の暗号化により適したアルゴリズムがあるかどうかはわかりません。

私の質問は、
Cookie データの暗号化に最適な暗号化アルゴリズムは何ですか?

更新
より正確に言うと、2 つの Cookie を暗号化する必要があります。1 つはセッション情報を含み、もう 1 つは「remeber me」情報を含みます。

プラットフォームは、VPS 上の Linux 上の apache モジュールとしての PHP です。

更新 2 Cookie に情報を保存することは安全ではないというcletus
に同意します。

ただし、「remeber me」機能を実装する必要があります。これについて受け入れられている方法は、Cookie を設定することです。クライアントがこの Cookie を提示すると、有効なユーザー名とパスワードの組み合わせを提示したかのように (ほぼ) 同等の権利でシステムにアクセスできます。

したがって、少なくとも Cookie 内のすべてのデータを暗号化して、a
)悪意のあるユーザーが内容を読み取れないようにする必要があります
。b)悪意のあるユーザーが独自の Cookie を作成したり、改ざんしたりできないようにします。

(Cookie からのすべてのデータは、何かを行う前にサニタイズされ、有効性がチェックされますが、それは別の話です)

セッション Cookie には、sessionId/timestamp だけが含まれています。おそらく暗号化なしで使用できますが、暗号化しても問題はないと思いますか? (計算時間以外)。

データを Cookie に保存する必要がある場合、それを暗号化する最善の方法は何でしょうか?

更新 3
この質問への回答により、選択したアプローチを再考することができました。実際、暗号化を必要とせずに同じことができます。データを暗号化する代わりに、コンテキストがなければ意味がなく、推測できないデータのみを送信する必要があります。

しかし、私は途方に暮れています:
暗号化により、BigBadWorld™ にデータを送信できるようになり、それでも (かなり) 誰もそれを読み取ったり、改ざんしたりできないことを確信できると思いました
...暗号化のポイント?

しかし、以下の反応は次の方向に進んでいます。セキュリティを達成するために暗号化を信頼しないでください。

私は何が欠けていますか??

0 投票する
3 に答える
1603 参照

security - これは「remember me」機能を実装する合理的な方法ですか?

ユーザーがサイトにログインし、「私を覚えている」と言うと、ユーザーの一意の識別子を取得し、キーサイズ 256 の RijndaelManaged でこれを暗号化し、有効期限が設定された httponly Cookie にこれを配置します.. 120 日、サーバーへのリクエストが成功するたびに有効期限が更新されます。

オプションで、ユーザー エージェントと ipv4 アドレスの一部 (最後の 2 オクテット) に基づいて初期化ベクトルを生成します。

明らかに、これには実際の有効期限システムが組み込まれていないため、ユーザーは技術的にこの暗号化されたキーを永久に使用できます (サーバー側のキーを変更しない場合)。

この機能を許可するには、ユーザーがログインをバイパスして一意の ID (GUID) を提供できるようにする必要があるという事実を考慮しましたが、GUID だけでは実際のユーザーの GUID を推測するのは非常に難しいと考えました。しかし、GUIDを生成するボットノットによる攻撃に対してサイトを開いたままにしておきます(合法的なGUIDを見つけることがどれほど現実的かわかりません)..これが、サーバーが暗号化キーを知っている場所に暗号化があり、オプションでivブラウザと ip 部分に固有です。

サーバーがユーザーに関連付けられたチケットを発行し、これらのチケットの有効期限が既知であるため、サーバーが有効期限を管理し続ける別のアプローチを検討する必要がありますか? 有効期限を本当に気にする必要がありますか?私を覚えているのは結局私を覚えているのですか?

謙虚になるのを楽しみにしています;)、乾杯。

0 投票する
5 に答える
29726 参照

security - 「このコンピュータで私を覚えておいてください」-それはどのように機能するべきですか?

GmailのCookieを見ると、「rememberme」Cookieに何が保存されているかを簡単に確認できます。ユーザー名/1回限りのアクセストークン。ユーザー名がシークレットの場合も、別の方法で実装できます。しかし、何であれ...セキュリティはそれほど高くありません。Cookieを盗むと、準備が整います。

ただし、私の質問は機能面です。アクセストークンはいつワイプしますか?ユーザーが別のマシンで[覚えている]をクリックせずにログインした場合、すべてのマシンでアクセストークンを無効にする必要がありますか?これが伝統的にどのように実装されているのか、またどのように実装されるべきかについて質問しています。

0 投票する
2 に答える
3952 参照

asp.net - ASP.NET での "Remember me" 機能の実装

remember meASP.NET Web サイトに' ' 機能を実装する最良の方法は何ですか?

カスタム Cookie を使用する必要がありますか、それとももっと簡単な方法がありますか?

0 投票する
3 に答える
5801 参照

zend-framework - Zend FrameworkのrememberMe()は私を覚えていないようです

私のセッションは現在のウィンドウ/タブでのみ有効なようです。また、すぐにタイムアウトするようです。これが私が現在それをしようとしている方法です:

これは私のログインコントローラーにあります:

そして、これは私のブートストラップにあります:

私はこれらのもののいくつかに比較的慣れていないので、我慢してください!どんな助けでも大歓迎です。

0 投票する
1 に答える
1511 参照

c# - ログイン時に「remember me」機能を実装している間、フォーム認証が defaultUrl にリダイレクトされない

ログインページの「記憶」機能を備えた ASP.Net Web サイトがあります。フォームベースの認証を使用し、defaultUrl はデフォルト ページを指しますが、セッションが認証されていてもサイトにアクセスすると、ユーザーはデフォルト ページにリダイレクトされず、ログイン ページにとどまります。これはライブ サイトでのみ発生し、開発環境では問題なく動作します。

その理由は何ですか?それを修正する方法はありますか。

ありがとう

0 投票する
2 に答える
1045 参照

zend-framework - セッション管理(Zend Framework固有)

私はrememberMe()関数を取得して、ユーザーを記憶し、一度に数か月間セッションを保持しようとしています。

RememberMe()を介して値を渡すと、セッションがすでに開始されている場合は機能しないことを読みました。PHPマニュアルのsession_set_cookie_params()のドキュメントから、「すべてのリクエストに対して、session_start()が呼び出される前にsession_set_cookie_params(を呼び出す必要があります。」

私が思っていたように、ブートストラップでZend_session :: start()を呼び出しています。私の問題は、rememberMe()が機能していないように見えることです。

session_get_cookie_params();を呼び出すと 私は得る:

何かご意見は?

0 投票する
1 に答える
2154 参照

vb.net - Windowsアプリケーションに「Rememberme」チェックボックスを実装しますか?

こんにちは私は、1つのデータベースにアクセスするいくつかのステーションで実行されるWindowsアプリケーション(WPF)を作成しています。

私はすでにログインシステムを介してログインフォームを実装しましたMy.User.CurrentPrincipal。ここで、ログインフォームに[このコンピューターで記憶する]チェックボックスを実装したいのですが、値をどこに保存すればよいですか?

クッキーでしょうか?.settings値?または他にどんな良い提案がありますか。

更新
また、どのデータ(つまりどの値)を保存する必要があるか、安全である必要があり、ユーザーが値をコピーできないようにする必要があります。

前もって感謝します!