0

Google Cloud Datastoreの種類で一意のプロパティを実行する唯一の信頼できる方法は、キープロパティによるものであることはよく知られています。 GoogleユーザーAPIを使用してユーザーを認証するGoogle App Engineer(GAE)アプリケーションを構築していて、Profileという種類を作成したかったとしましょう。ユーザーあたり1つのプロファイルしか存在できません。この一意性を強制するためには、UserオブジェクトIDをキープロパティとして格納するのは理にかなっています。実際には、Google App Engine User API documentationも、この意見:データストアデータストアキーとしてのGAEのuser_idに関するセキュリティ上の懸念

ユーザーIDが安定しているとユーザー値を使用して

。キー名または文字列プロパティとして使用できます。ユーザー値を使用している場合したがって、あなたは、ユーザーID

を保存しかし、私たちのアプリは、ブラウザでは、これらのユーザープロファイルへのハイパーリンクを表示する必要があるとします。 user.user_id()文字列でURLを作成するのが適切ですか?ユーザーIDは機密情報として扱われるべきではありませんか?ユーザーのGoogleアカウントのuser_idは、すべてのGoogleアプリケーションで同じです。ブラウザに漏れているように見えますが、GAEのドキュメントで何か禁止が見つかることはありません。

の場合、ユーザーIDをクライアントに漏らしてはいけません。ハッシュされるはずですか?または、GoogleのユーザーIDが一意でなければならない種類を設計する他の方法がありますか?

注:ユーザーIDをキーとして使用して、それを現在のユーザーと比較すると問題はありません。問題は、ブラウザに公開できるかどうか(そうでない場合)、一般的に、リソース(ブログ投稿など)の所有者(アプリケーションユーザ)が必要とするケースを処理する方法アプリケーション内に表示されます。

答えて

2

Googleセキュリティは、ブラウザから公開されていても問題ありません。

Google+は、ユーザーのプロフィールを表示しているときに、また自分の投稿のURLの一部としてURLでこの情報を使用します。

+0

興味深いことに、App Engineでget_current_user()。user_id()で取得したIDを保存し、Google Cloud Consoleでデータストアを確認すると、表示されるIDはhttps://plus.googleのものと異なります。私のプロフィールのURLでcom /。 –

+0

@RayToal GAEユーザーAPIは、必ずしもGoogle+や他のGoogle認証システムと同じIDを使用するとは限りません。 –

関連する問題