私は小さなGAEアプリケーション、Androidアプリのバックエンドを持っています。アプリに、データストアからデータを取得してユーザーに送信するサーブレットがあります。誰にもこのサーブレットを使用させたくないので、秘密鍵をアプリに保存し、リクエストごとにトークンを送信します-秘密鍵と現在のミリ秒のハッシュ文字列、およびミリ秒ハッシュで使用しました。サーバーはミリ秒と秘密鍵を取得し、それをトークンと比較しています。うまくいけば、サーバーはミリ秒をに保存しているHashSet
ので、それを二度と使用しないことがわかります。(誰かがデバイスデータを盗聴し、同じミリ秒とトークンを何度も送信する可能性があります)。
最初は、サーブレットクラスに静的フィールドを保持しましたが、このフィールドは永続化されておらず、インスタンスが破棄されるとすべてのデータが失われるため、後で間違いとして発見されました。
について読んだことがありますが、アプリのメモリが不足している場合やサーバーに障害が発生した場合でもMemcache
、のデータが消去される可能性があるため、最適なソリューションではありません。Memcache
データストアを使用すると、リクエストが非常に遅くなるため、使用したくありません。
問題に直面しているのは私が最初ではないと思います。どうすれば解決できますか?