1

ほとんどの Web アプリケーションは、ユーザーとの何らかのセッションに依存しています (たとえば、ログイン ステータスを保持するため)。セッション ID は、ユーザーのブラウザーで Cookie として保持され、すべての要求と共に送信されます。

次のユーザーのセッションを推測しにくくするために、これらのセッション ID はまばらで、ある程度ランダムである必要があります。も一意である必要があります。

問題は、まばらで一意のセッション ID を効率的に生成する方法です。

この質問には、一意の乱数に対する適切な回答がありますが、配列が最終的に大量のメモリを消費するため、大きな範囲の数値に対してはスケーラブルではないようです。

編集:

  • GUID は、セキュリティ (およびランダム性) に関する限り、安全ではないと見なされます。
  • 中心的な問題は、数値が一意であることを確認することです。つまり、数値が繰り返されず、効率的になります。
4

2 に答える 2

2

それらを一意で簡単に推測できないようにしたい場合は、これらを組み合わせてみませんか?

カウンターを取り(新しいセッションに対して一意の値を生成します)、 CSPRNGによって生成されたランダムビットを追加します。必要な最小ビット数を正しく取得するようにしてください。

これは、問題なくファームでも機能するはずです。サーバーに対してローカルなカウンターの前に、そのサーバーに固有のIDを付けるだけです。

SSSSCCCCCRRRRRR

はセッションSを作成したサーバーID、Cはサーバーのローカルカウンター、Rは暗号ランダムです。

(免責事項:文字数は、使用する必要のある桁/ビット数に対応していません。:)

ユニークで安全。

于 2010-03-23T19:14:27.717 に答える
0

.NET を使用している場合は、RNGCryptoServiceProvider を参照してください。

http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=775

これは、乱数を生成する暗号的に安全な方法です。

于 2010-03-23T18:47:54.353 に答える