1

ビューステートがMVCに存在しないことは知っています。asp.netWebフォームの暗号化されたビューステートモードに似たものを探しています。リクエストで一部のデータを非表示にしたい。

私が達成しようとしているのは、応答にデータを渡し、それをユーザーから隠すことです。ユーザーがデータを変更したり表示したりできるかどうかはわかりません。そのデータをクライアント側で非表示にしておくことで、セッションを使用してそのデータを保持できないため、サービス呼び出しを減らしたいと思います。

データはまったく表示されません。後でサービスに渡す必要があります。

4

3 に答える 3

1

非表示の入力フィールドに入力する前に値を暗号化し、投稿時にサーバーで復号化する必要があります。

C#で簡単な暗号化/復号化を行う方法を調べてください。ここにいくつかの良い実装があります:

http://www.joshrharrison.com/archive/2009/01/28/c-encryption.aspx

https://stackoverflow.com/a/5518092/160823

于 2013-03-15T16:34:33.810 に答える
1

だから私は私の質問に対する答えを見つけました。望ましい動作を追加するMVC3Futuresプロジェクトがあります。

エンティエモデルをシリアル化して暗号化することが可能です。

@Html.Serialize("Transfer", Model, SerializationMode.EncryptedAndSigned)

コントローラでのバインドは、逆シリアル化された属性を配置することで自動化されます。

public ActionResult Transfer(string id,[Deserialize(SerializationMode.EncryptedAndSigned)]Transfer transfer)
于 2013-03-20T06:30:45.763 に答える
0
  1. 私はあなたが何を暗号化しているのか本当にわかりませんが。ただし、CSRFまたはデータの改ざんを回避したい場合は、これを実行してください。

AntiForgeryToken()改ざんされたデータを再度検証するために使用できます。偽造防止トークンは、クロスサイトリクエストフォージェリからアプリケーションを保護するために使用できます。この機能を使用するには、フォームからAntiForgeryTokenメソッドを呼び出し、保護するアクションメソッドにValidateAntiForgeryTokenAttribute属性を追加します。

ビューでは、この AntiForgeryTokenのように使用します

@Html.AntiForgeryToken()

コントローラー内

[ValidateAntiForgeryToken]
Public ActionResult SomeAction()
{
  return view()
}
于 2013-03-15T12:44:25.640 に答える