20

多くの Web サイトが、データベース テーブルで 1 からインクリメントするのではなく、ランダムな id:s を使用することを選択するのはなぜでしょうか。正当な理由が見つからずに検索しましたが、何かありますか?

また、どの方法を使用するのが最善ですか?データを挿入する前にIDがすでに存在するかどうかを確認するのは非常に非効率的です(2番目のクエリが必要です)。

ご協力いただきありがとうございます!

4

3 に答える 3

11

内部では、行を識別するためにデータベース内の増分 ID を使用している可能性がありますが、URL パラメータを介してエンド ユーザーに公開される値は、多くの場合、使用可能なオブジェクトのシーケンスを推測しにくくするためにランダムな文字列になります。 .

それは、あいまいさによるセキュリティの問題です。自動化されたスクリプトが増分値を処理して URL を介して攻撃を試みるのを妨げ、サイト コンテンツの自動スクレイピングを妨げます。

たとえば、YouTube が のような値の代わりに増分 ID を使用した場合、その値v=HSsdaX4sから始めて何百万回も増分するだけで、すべてをダウンロードできますv=1

于 2012-06-20T12:38:54.143 に答える
4

シーケンシャル ID はうまくスケーリングできません (分散システムでは同期のボトルネックになります)。

また、新しく生成されたランダム ID が既に存在するかどうかを確認する必要はありません。存在しないと想定できます (非常に多くの ID があるため)。

于 2012-06-20T12:39:59.663 に答える
1

IDがランダムだと確信していますか?またはそれらはエンコードされていますか?いずれにしても安全のためです。

于 2012-06-20T12:40:01.393 に答える