3つのテーブルがあるとしましょう。
User Blog Post
UserId BlogId PostId
Username BlogName PostTitle
UserId BlogId
今、ブログの所有者がにアクセスしようとしているとしましょうEditPost.aspx?ID=51
。元のブログ所有者だけが実際の投稿を見ることができるように、このクエリ文字列をどのように保護しますか。例えば。ユーザーJonはユーザーMaryの投稿の編集を開始しませんか?
私が持っているいくつかのオプション:
1)クエリ文字列を暗号化します。これは明らかに100%安全ではありませんが、機能します。
2)クエリ文字列に含まれるPostIDが、実際にログインしているユーザーの投稿であるかどうかを、SessionにあるUserIDと照合することで毎回確認します。これの欠点は、テーブルが3つしかない場合は問題ありませんが、10〜12のテーブルが関係するテーブルの階層があり、1番目のテーブルにUserIDがあり、実際に12番目のテーブルをクエリしている場合は、チェックする必要があります。 12の結合を作成してトップに戻り、それが「本当に」彼のものであるかどうかを実際に確認します。
質問は、これらのうちどれをあなたのサイトで実際に使用していて、仕事はうまくいっていますか?