1

前もっての質問:

私が理解していることから、allocate_ids は ID のブロックを予約します。これは、新しいエンティティの作成または別の allocate_ids 呼び出しのいずれにもデータストアによって使用されません。あれは正しいですか?

もしそうなら、未使用の割り当て ID は再利用されますか? もしそうなら、タイムアウト期間は何ですか?

未使用の割り当て ID が再利用されない場合、ID が不足する危険がありますか? 他に有害な影響はありますか (ID が過度に大きくなるなど)。

バックグラウンド:

REST API を介して重複オブジェクトを作成しないようにするシステムを作成しようとしています。初期フォームを作成するときに allocate_ids を呼び出し、id をフォームに埋め込みます。フォームが REST API に送信されると、ID が埋め込まれたオブジェクトが作成されます。同じフォームが 2 回送信された場合、重複するオブジェクトを作成しないことがわかります。

フォームが送信されずに何度も表示される可能性があります。その場合、エンティティを作成しないところで多くの ID を使い果たすリスクがあります。この計画に問題はありますか?

4

2 に答える 2

1

いくつかの問題:

  1. データストア ID をクライアント側に公開しないでください。@Shay が指摘したように、ユーザーはデータを直接操作できるため、これはセキュリティ リスクです。

  2. 重複申請の問題は、基本的には申請の流れの問題です。これを解決するには、クライアント側のソリューション (javascript) を好みますが、サーバー側のソリューションを主張する場合は、sessionsを使用します。偽の ID を作成し、それをセッションに保存し、フォームの非表示フィールドとして設定します。フォームが送信されたら、このフィールドを確認してください。

于 2012-08-30T08:38:15.957 に答える
1

システムは簡単にハッキングされる可能性があり、誰かが ID の値を手動で変更すると、既存のエンティティが上書きされます。新しいオブジェクトを作成するときは、データを投稿するだけで、AppEngine が生成して ID を生成します。

allocate_id は (少なくとも) 64 ビット空間で機能するため、1 秒あたり 10 個の ID を生成したとしても、それらがなくなるまでに数千年かかります。

于 2012-08-30T04:34:02.700 に答える