では、GAE アプリケーションに対する XSRF 攻撃を防ぐ最善の方法は何でしょうか? 次のことを想像してください。
- 誰でもユーザーの公開オブジェクトを見ることができ、db.Model id を要求で使用して、表示するオブジェクトを特定します。悪意のあるユーザーが ID を取得しました。
- 悪意のあるユーザーが独自のオブジェクトを作成し、削除フォームをチェックアウトします。彼らは、特定の ID を持つオブジェクトを削除する方法を知っています。
- 悪意のあるユーザーが無実のユーザーに、そのユーザーのオブジェクトの削除要求を送信させます。
#3 を防ぐためにどのような手順を追加できますか? ID と言うときは、キーの実際の ID 部分を使用していることに注意してください。私が持っていた 1 つのアイデアは、削除要求で完全なキー値を使用することでしたが、悪意のあるユーザーがこれを理解するのを防ぐことができますか? 私が知る限り、キーはモデル クラス タイプ、アプリ ID、およびオブジェクト インスタンス ID の組み合わせであるため、必要に応じて ID からキーを導出できる可能性があります。
他のアイデアはありますか?Jeff はこれについて投稿し、いくつかの方法を提案しました。リクエストごとに変更される非表示のフォーム値と、js を介してフォームに書き込まれる Cookie 値です。javascript 以外のユーザーを除外したくないので、Cookie ソリューションは役に立ちません。非表示のフォーム値の場合、削除可能なオブジェクトを表示するすべてのリクエストでデータストアへの書き込みを行う必要があります。スケーラブルなアプリケーションにとって理想的な状況ではありません。アプリ!
そこに他のアイデアはありますか?