2012-05-08 10 views
2

非常に多くの情報を持つエンティティを構築するには、送信するフォームのシーケンスを実行する必要があります。コントローラからビューを返すたびに、まだ確立されていないエンティティについてのIDを渡す必要があります。今、私はこれらの情報を隠しフィールドに挿入し、サーバーにポストバックすると、エンティティを構築し続けます。 このシナリオは数回続きます。 私は機密情報を渡すこの方法に非常に満足していないし、もっと適切なやり方があるのだろうかと思っていた。私は認可と認証を使用しますが、1人のユーザーがこれらのIDをハックしてサーバーに送り返す前に間違ったエンティティを変更するシナリオをまだ心配しています。重要なデータをビューからコントローラに渡す方法

また、同じデータを前後に渡すのは難しい作業です。私はセッションの使用を失格としました。なぜなら、異なる種類のデータ混乱の脅威を明らかにするからです。 (一度に複数のブラウザーを使用する場合)。

上記の操作はどのように行う必要がありますか?

+1

は(ハッシュを作成別名)の署名についてのジェイソンの答え@を参照してください。暗号的に安全なハッシュを生成する方法の例です。隠されたフィールドはあなたを守りませんし、入力フィールドを「読み込み」しません。暗号化/復号化は本当に適切ではありません。クライアント(ブラウザ)は常に元のデータを平文で送信します。クライアント側の暗号化ライブラリについて考えているなら、確かにそれはクライアント側です(何があっても見る/見ることができます)。ハッシュサーバー側を作成し、ハッシュサーバー側で比較します。 – EdSF

+0

ありがとう!残念ながら私はあなたのコメントを投票することはできません... –

答えて

0

あなたは多くのアプローチを使用してデータを保護することができ、私はこの記事でそれのいくつかを議論し

http://miroprocessordev.blogspot.com/2012/03/save-aspnet-mvc-application-against.html

http://miroprocessordev.blogspot.com/2012/03/safe-aspnet-mvc-application-against.html

+0

ありがとう、私は確かにこれについて調査するつもりです... –

+0

私はどのように悪意のある成功を防ぐことができます役職。 –

+1

これらのフィールドを読み取り専用にして、重要なデータを暗号化/復号化し、解読されたデータを対応するDBエンティティと比較して、ユーザーがそれを更新できないようにすることができます。 –

0

uを送ること毎回を識別するために、トークンとクロスサイトリクエストフォージェリを使用サーバー側で生成され、HTMLから返された同じトークンを含む情報

+0

ありがとう、私はこのオプションをチェックします。 –

+0

これは別の質問の答えと思われる。それは「クロスサイトリクエスト」を避けることを意図していました。私は正しい? –

関連する問題