最近、ASP.NETMVC4コードベースを継承しました。私が指摘した問題の1つは、URLとhtmlフォームの送信でいくつかのデータベースID(int)が使用されていることでした。現在の状態のコードは、URLをいじくり回したり、異なる番号のカスタムHTML投稿を作成したりすることで利用できます。
これで、セッション状態または追加の認証チェックを使用してURLの問題を簡単に修正できますが、サイトが吐き出すHTMLに埋め込まれるデータベースIDについてはよくわかりません(つまり、ドロップダウンを使用して入力します)。IDが投稿に戻ってきたときに、有効なオプションとしてIDを確実に配置するにはどうすればよいですか?この問題に対処するという観点から、「ベストプラクティス」と見なされるものは何ですか?
私は「GUIDを上げる」ことができたことに感謝していますが、データベースをデバッグするときに操作するのが面倒なので、そうすることを躊躇しています。
ここに選択肢はありますか?IDを簡単に推測できないようにGUIDする必要がありますか、それともIDがサイトに戻ってきたときにIDの使用を検証するために使用できるDRYメカニズムのようなものがありますか?
更新:コメント投稿者は、私が期待しているエクスプロイトについて質問しました。「宝物」をインポートできるすべての場所のドロップダウンリストを含むHTMLフォームを吐き出したとしましょう。ユーザーが所有する場所のIDは1、2、および3であり、これらはHTMLで提供されます。しかし、ユーザーはhtmlを調べてそれをいじり、IDが4のPOSTを選択することにしました。4は彼の場所ではなく、他の誰かの場所です。