1

ビューで html ヘルパー メソッドを使用して TextBox を作成しています。

@Html.TextBoxFor(m => m.Address, new { @readonly = "readonly" })

悪意のあるユーザーが変更しようとしても、このテキストボックスが投稿されたときにその値を保持することを望みます。

コードを IE でテストしていますが、開発者ツールを使用して属性「読み取り専用」を簡単に削除できます。

投稿時にテキストボックスの値を保持する MVC3 の実装はありますか? 元の値を取得するためにデータベースにアクセスしないようにしています。

4

2 に答える 2

4

投稿時にテキストボックスの値を保持する MVC3 の実装はありますか?

いいえ、ありません。これは不可能です。値をクライアントに送信した場合、それを信頼することはできなくなります。すでに発見したように、ユーザーが隠しフィールドと読み取り専用フィールドの値を変更するのは簡単です。したがって、これらの値がユーザーによって変更されることを意図していない場合は、HTML の一部であってはなりません。それらをサーバー上に保持する必要があります。実際には、ユーザーに情報を提供するためだけに読み取り専用フィールドとして表示することもできますが、フォームが送信されるときはこの値を使用せず、サーバー (おそらくデータベースまたは使用している永続ストア) に格納されている実際の値を使用します。 .

于 2013-01-30T21:35:03.913 に答える
0

保持したいものすべてをシリアル化し、サーバーだけが知っているキーを使用して暗号化し、暗号化された値を非表示の入力に保存してみませんか。フォーム コントローラーで暗号化されていない値を表示することはできますが、サーバー側では、実際の処理のために非表示の入力を介して送信された暗号化された値を使用します。このように、悪意のあるユーザーが標準入力を変更しても、暗号化されたコピーを使用することになるので、問題ではありません..少しサイドワインダーです,私は知っています.Webフォームが投稿間でビューステートを維持する方法に似ています..乾杯

于 2013-01-31T02:57:04.593 に答える