4

私は.netの世界に慣れていないので、しばらくお待ちください。コントローラ(レイザーエンジンを搭載したMVC4アプリケーション)からのビューにユーザーのリストを表示する必要があります。

ユーザーがビューに表示されている場合、クライアントはリンクをクリックして、別のビューで特定のユーザー情報を取得できます。これを実装したいのですが、特定のクライアントIDをユーザーから隠したいのです。クライアントIDは、サーバー側でクライアント情報を取得するために使用されます。

これはいくつかの方法で実行できます。たとえば、リンクにdata-Idを配置し、サーバー側でこのIDを使用して、DBからより多くの情報を取得できます。私の懸念は、クライアントがHTMLソースからこれらのIDを確認し、このID情報を使用してコントローラーのURLを入力できることです。隠しフィールドも好きではありません。

だから私の質問は、そのような機能を実装するための他の異なる方法やベストプラクティスは何ですか?

4

2 に答える 2

4

説明した方法でキーを使用することは、アプリケーション内を移動するのにかなり一般的です。

セキュリティが心配な場合(誰かが発見または推測したキーをコントローラー上のアクションに渡して、すべきでない情報を見ることができる)、アクションから情報を返す前に、コントローラー/アクションレベルでユーザーコンテキストを検証して決定します不適切と思われる場合は、安全な情報を返さないでください。

UIが必要なコンテキスト情報のようにサーバー側に応答できるようにする他の唯一の方法は、クライアントに送信される重要なデータごとに代理GUIDフィールドを生成し、その代理を使用してに送信することです。サーバー側で、GUIDを実際のキーに変換して戻し、ビジネスに取り掛かります。(GUID自体は、intほど推測可能ではありません。)しかし、私はそのようなことは決してしません...

あなたが解決しようとしている問題について考え、それがこの種の複雑さを正当化することを確認してください。

于 2013-01-12T04:05:26.347 に答える
0

上記のすべてに同意します-IDに基づいて詳細情報を表示するためのユーザーインターフェイスを提供している場合、そのIDを非表示にすることはできません-それをポストバックする必要があります。実際のID(つまり、GUID)ではない場合がありますが、それは関係ありません。クライアント側で、IDに基づいて詳細を取得するために誰でも使用できるIDを提供します。

「電話帳を提供したいのですが、電話番号は表示しません。できますか?」と自問してみてください。

于 2013-01-12T06:23:20.187 に答える