1

私は mongodb を使用して小さな Web アプリケーションを作成していますが、mongoIds を URL などで公開することをお勧めします。

現在、ユーザー プロファイルに次の URL 構造を使用しています: http://example.com/user/MONGOID

これにはセキュリティ上の欠陥がありますか、それとも他の方法で推奨されませんか?

4

2 に答える 2

2

いいえ、セキュリティへの影響はありません。

その人ができることは、あるユーザーの ID を推測するか、すべての ID を調べてシステムのすべてのユーザーを取得しようとすることだけです。

スタックオーバーフローを例に取ります。彼らはあなたと同じパターンを持っています:http://stackoverflow.com/users/352959これは 352959 です あなたであり、何も悪いことはありません. ブラウザでこれを入力するたびにリダイレクトされる唯一のこと http://stackoverflow.com/users/352959/king-julien.

これらの数字を反復してみると、次の人物はhttp://stackoverflow.com/users/352960ジョンであることがわかります。そして確かhttp://stackoverflow.com/users/1にリソースの作成者です。

于 2013-08-13T01:35:29.160 に答える
2

答えは多くのことに依存します...

URL で ID を使用することは、通常はお勧めできません。OWASP によると、Web セキュリティ脆弱性リストのトップ 10 で 4 位にランクされています。しかし、それを使用してもプロジェクトが台無しになることはありません。

セキュリティの脆弱性を防ぐには、次のいずれかを行う必要があります。

  • 公開されているデータ (StackOverflow プロファイルなど) でのみ使用します。
  • コードでリクエストをインターセプトし、ユーザーがリソース (プロファイル、ページ、ドキュメントなど) を表示する権限を持っていることを検証します。

Itを使用する_idと、パブリック URL がバックエンドに結び付けられます。データベース テクノロジを変更する場合は、何らかの変換が必要になります。または、オブジェクトが破棄されて再度作成されるような変更を実行する必要があるかもしれませんが、_idデータベースのマージなど、別の .xml を使用します。そのため、URL を変更したくありません。

もう 1 つのことは_id、適切な空間分布がないことです。適切なシャーディング キーにはなりません。タイムスタンプから派生しているため、すべて_idが密接に関連しており、必要に応じて直線的です。それらは同じシャードに入る傾向があります (Mongo は後でそれらを拡散しますが、カーディナリティの高いキーが必要です)。

したがって、私は今すぐ支払うことを好み、最初からアプリケーション専用の id フィールドを使用します。必要に応じてフィールドに格納することもできます_idが、ドキュメントに別のキーを追加してインデックスを作成し、それを URL で使用することを検討してください。

于 2013-08-13T02:13:34.417 に答える