2009-08-18 104 views
7

最終的にデータベースに格納するには、UUIDを生成する必要があります。クライアントブラウザ(Javascript)からこれらのUUIDを生成できますか(There are some examples here)?Javascriptのクライアント側でUUIDを作成することは危険ですか?

このようなセキュリティ上のリスクはありますか?私は、誰でもUUIDを保存してからサーバーに渡して保存できることを理解しています。だから私は彼らがデータベースに格納する前にtrullyユニークであるかどうかをチェックする必要がありますが、それ以外の場合、チェックアウトする他のものはありますか?

(私の英語のため申し訳ありませんが、任意の文法エラーを修正して自由に感じる)

編集:私はこれをしたいと思う理由についての質問に答えるために、私は新しいオブジェクトを作成することができますので、それはだ、それは中の識別子ですJavascriptを使用してビューに追加し、サーバーにAJAX呼び出しを行ってデータベースに追加します。このようにして、データベースからそれをロードして、何が主識別子であるかを知る必要はありません。

+0

私は、ユーザにあなたのUUIDジェネレータコードを見せてもらうことがセキュリティ上の問題になると思います。理論的には、たとえば、他のユーザのセッションIDなどの既存のUUIDを生成することが可能になります。 –

答えて

9

それが単純な識別子で、それ以上のものでない限り、実際に妥当性と一意性をチェックしている限り、例えば、URLにidを持つユーザーアカウントと変わりません。

あなたのURLバーを見てください。私は1296234がこの質問の主な鍵だと思っていますが、私はその情報で本当に何もできません。あなたのスクリプトと同じ取引。

+0

ありがとうございます。私は間違ったことは起こらないとは思っていませんでしたが、何らかのよく知られている攻撃を見逃していないことを確認したいと思いました。 –

3

これらのクライアント側の生成にどのようなメリットがありますか?すべての正直なところ、最良の選択肢は、ユーザーの手の届かない範囲でサーバー側を生成することです。重大なセキュリティ上の問題からあなたを救うことはできませんが、冗長な検証ではなくなります。

+0

このスレッドは古いですが、完全に冪等のcreate REST呼び出しを使用している場合は、クライアントでIDを生成する必要があります。もう1つの方法は、サーバーに新しいIDを照会し、そのIDをREST呼び出しの作成で使用することです。ただし、サーバーへの2回の呼び出しを意味します。 – Alkaline

+1

@Sampsonクライアント側でUUIDを生成する必要があるとは思っていませんでしたが、今はオフラインWebアプリケーションに興味があり、クライアント側で生成されたUUIDをこのユースケースに最適です! – Maxime

+0

厳格なCQSを守っていて、正しいIDに戻す必要がある場合(適切なビューにリダイレクトするなど)、これは良い方法です。 – Shocked

3

データベースでIDを生成(増分)できないような理由はありますか?

あなたが言っているように、とにかくそれを提出する前に値の一意性をチェックしなければならない場合、使用しているバックエンド言語を生成するだけではいかがですか?それははるかに不透明にするでしょう。

+2

将来の視聴者のためにここには注釈:自動生成されたIDに依存しないようにします。データベースから切り離して、代わりにUUIDを使用する –

2

はい。リスクはUUIDに固有のものではなく、クライアント側で生成されたIDには、IDの処理内容に応じていくつかのリスクがあります。問題は、Javascriptを認証することが非常に難しいことです。クライアントが生成したIDを受け入れる場合は、ハッカーからIDを受け取ります。

リスクは、

  1. セッションスチールを含むことができます。セッションを識別するためにIDを使用する場合、既存のIDを生成IDとして使用してもよく、適切な管理が取られていない場合、サーバーは既存のセッションとして扱うことがあります。

  2. 重複するキー。真のUUIDはランダムですが、誰かが重複した鍵を生成してデータベースを台無しにすることがあります。

これらの攻撃に対して防御する方法がありますが、これは受動的な保護です。これは、クライアント上でIDを生成するという本来の目的を破る可能性があります。これは簡単です。

+0

セッションIDを特定すると、任意のウェブサイトでハッキングされます。ポイント1は有効なポイントではありません。 –

関連する問題