12

Mongodb に Products 配列があるとします。ユーザーが自分のページで各製品を確認できるようにしたい: http://www.mysite.com/product/12345/Widget-Wodget. 各製品には増分整数 ID (12345) はなく、代わりに BSON ID (5063a36bdeb13f7505000630) があるため、整数 ID を追加するか、BSON ID を使用する必要があります。

BSON ID には PID が含まれているため、次のようになります。

  • 4 バイトのタイムスタンプ、
  • 3 バイトのマシン ID、
  • 2 バイトのプロセス ID、
  • 3 バイトのカウンター。

URL で BSON ID を使用すると、安全な情報が外部に公開されますか?

4

3 に答える 3

18

マシンの特権を取得するための用途は考えられませんが、どこでも ObjectIds を使用すると、多くの情報が開示されます。

Web サイトをクロールすると、次のことが可能になります。

  • いくつかの隠されたオブジェクトについて見つけます。たとえば、カウンタ部分が時間 t1 と t2 の間で 0x....b1 から 0x....b9 になる場合、これらの間隔内で ObjectIds を推測できます。ただし、アクセス許可を強制する場合、ID の推測はおそらく役に立たない
  • 各ユーザーのサインアップ日を知る (あまり機密情報ではありませんが、何もないよりはましです)
  • スタッフによって作成されたオブジェクトのタイムスタンプから、実際の (公開されているものとは対照的に) 営業時間を推測する
  • ユーザーが生成したオブジェクトのタイムスタンプから、視聴者が住んでいるタイムゾーンを推測します。ウェブサイトが主にランチタイムに使用されるものである場合、ObjectIds のピークを測定し、UTC 午後 8 時のピークは視聴者が米国西海岸
  • より一般的には、Web サイトの大部分をクロールすることで、ユーザー数、ユーザー エンゲージメントのレベル、所有しているサーバーの数、頻度などの情報をいつでも把握して、サービスの成功のタイムラインを構築できます。サーバーが再起動されます。週末に発生する PID の変更はクラッシュである可能性が高く、営業日に発生する PID の変更はクラッシュ + ソフトウェアの改訂である可能性が高くなります。
  • ビジネス プロセスとドメインに固有のその他の情報が見つかる可能性があります。

公平を期すために、ランダムなIDを使用しても、多くのことを推測できます。主な問題は、誰かがサイトの統計的に重要な部分をスクレイピングするのを防ぐ必要があるということです. しかし、誰かが決心した場合、最終的には成功するでしょう。

于 2012-12-06T09:01:08.740 に答える
2

ObjectIDの情報を共有しても、セキュリティが損なわれることはありません。ObjectID がいつ作成されたか (タイムスタンプ) などの詳細を誰かが推測することはできますが、ObjectID コンポーネントはいずれも認証または承認に結び付けられるべきではありません。

e コマース サイトを構築している場合、通常、SEO は公開 URL の重要な考慮事項です。この場合、通常は、ObjectID よりも短く、よりセマンティックなパス コンポーネントを含む、より使いやすい URL を使用します。

フィールドにデフォルトの ObjectID を使用する必要はないことに注意してください_id。そのため、常にアプリケーションに関連するものを生成できます。デフォルトの ObjectID は一意性を合理的に保証するため、独自の_id割り当てを実装する場合は、これを考慮する必要があります。

以下も参照してください。

于 2012-12-05T21:03:45.573 に答える
2

@Stennieが言ったように、そうではありません。

pid から始めましょう。ほとんどのハッカーは、たとえば Linux で pid を探したりせず、代わりに次のようにします。

ps aux | grep mongod

または似たようなもの。もちろん、これにはハッカーが実際にサーバーをハッキングしている必要があります。私は、pid だけに基づいて公開されたハッキン​​グが利用できないことを知っています。マシンまたは を再起動すると pid が変更されることを考えるとmongod、この情報はスパイしようとしている人にとってはまったく役に立ちません。

マシン ID は、公にはまったく役に立たないもう 1 つのデータであり、正直なところ、マシン ID だけを使用pingするよりも、ネットワークをよりよく理解することができます。digg

したがって、質問に答えるには: いいえ、実際のセキュリティ上の脅威はなく、表示されている情報は MongoDB 以外の誰にも実際には役に立ちません。

また、SEO に適した URL の使用について @Stennie に同意します。e コマースでよく使用する例は/product/product_title_、小さいランダム ID (おそらく base 64 で をエンコード_id) を使用するか、最後に自動インクリメント ID を使用.htmlすることです。

于 2012-12-05T21:12:43.583 に答える