に関する Microsoft のドキュメントにNEWSEQUENTIALID
よると、NEWSEQUENTIALID の出力は予測可能です。しかし、予測可能性はどの程度予測可能ですか? によって生成された GUID があるNEWSEQUENTIALID
とします。
- 次の値を計算しますか?
- 前の値を計算しますか?
- 最初の値を計算する
- GUID をまったく知らなくても、最初の値を計算しますか?
- 行数を計算する たとえば、整数を使用する場合
/order?id=842
、アプリケーションには 842 の注文があることがわかります。
以下は、私が行っていることと、さまざまなトレードオフについての背景情報です。
整数よりも GUID を主キーとして使用することのセキュリティ上の利点の1 つは、GUID が推測しにくいことです。たとえば、データベース内の最初のユーザーが管理ユーザーである可能性が高いため、ハッカーが/user?id=845
にアクセスしようとするような URL を見たとします。/user?id=0
さらに、ハッカーは反復処理を繰り返して、/user?id=0..1..2
すべてのユーザーをすばやく収集できます。
同様に、整数のプライバシーに関する欠点は、情報が漏洩することです。/order?id=482
は、実装以来、Web ショップに 482 件の注文があったことを教えてくれます。
残念ながら、主キーとして GUID を使用すると、よく知られたパフォーマンス上の欠点があります。この目的のために、SQL Server はこのNEWSEQUENTIALID
関数を導入しました。この質問では、 の出力がどの程度予測可能かを知りたいと思いNEWSEQUENTIALID
ます。