2012-01-09 32 views
0

私は:@ Html.HiddenForを使用してフォーム上のフィールドを隠すことができますが、 "表示ソース"を使用して隠しフィールドの値を引き続き見ることができます。mvc3 .net - ビューの隠しフィールドを完全に隠す方法はありますか?

MVC3でビューソースの非表示フィールドを非表示にする方法はありますか?ユーザーからプライマリキーを完全に隠したいが、モデルを介してビューからコントローラに渡す。形。

例へのコードスニペットまたはリンクは参考になります。 ありがとう

答えて

1

まあ、単純ないいえ。フォームを介してキーを送信する場合は、ソースからデータを非表示にする方法はありません。

投稿する主キーやどのような種類のフォームデータについて言及していないので、他の提案はありません。それがユーザーの主キーであれば、もちろんフォームからキーを送信する代わりにログインセッションを使用できますが、それ以外の場合はソースから主キーを明らかにする必要があります。

0

ソースからフィールドを非表示にすることはできません。

しかし、特定の状況では、IDをビューに渡さないなど、何か他の操作を試みることができます。コントローラー側に保管し、フォーム送信時に使用してください。もちろん、あなたはそれに注意する必要がありますが、それはTempDataまたはViewDataで実行可能です。ヒントがありますhttp://haacked.com/archive/2007/12/21/asp.net-mvc-helpers-for-repopulating-a-form.aspx

+0

フィードバックチャップに感謝します。 私はあなたがこれを行うことができないかもしれないと思った。フォームのユーザーがソースの主キーuserIdを参照できる場合、これはセキュリティの問題ではありませんか? – user1079925

+0

私は、特定のレコードの識別子を明らかにするのは普通だと言いますが、それはまた、あなたが作業しているデータの種類にも依存します。それは、ユーザーが購入したい本のBookIdだと言えば、そのIDを彼から隠す理由はありません。もしそれがもっと敏感なのであれば、あなたのIDをSHA1ハッシュでマスクし、レコード所有権/許可コントロールを追加することができます。 – torm

+0

@tormに感謝します。私はそこにuserIdを保持して、 IDのセッション。 – user1079925

0

複数のリクエストにまたがって情報を保持する必要がある場合は、サーバー側でTempDataコレクションを利用します。これは、セッションによってバックアップされますが、情報を短期間保持するように設計されています。あるいは、高さがゼロの隠れた、または他のhtmlでクライアントにデータをプッシュしなければならない場合は、対称暗号化または少なくともbase64エンコーディングを使用して暗号化する必要があります。

関連する問題