2012-03-26 30 views
0

私はAsp.Net MVC 3でWebアプリケーションを書いています。 いくつかの情報があるページと@Html.Hiddenフィールドがあるとします。ユーザーが隠しフィールドでこの情報にアクセスしないことを確認できますか? まもなく、隠されたフィールドを情報として使用することは安全ですか?それはユーザーには明らかにすべきではありませんか?隠しフィールド、安全?

答えて

7

私は、ユーザーが隠しフィールドでこの情報に到達しないことを確信できますか?言い換えれば、隠されたフィールドを情報に使用することは安全ですか?それはユーザーに明らかにすべきではありませんか?

絶対にありません。クライアントにはまだに送信されます。レンダリングされたHTMLでは表示されません。誰かが "ソースを見る"を使うと、彼らはまだフィールドを見るでしょう。

自分で見てみることをお勧めします。隠しフィールドを作成し、ブラウザでページを表示して[ソースの表示]を選択します。生成されたHTMLの外観を知ることは常に良いことです。

の場合、クライアントに情報を送信し、暗号化して最初に署名する必要があります。つまり、ユーザーはプレーンテキストで見ることができず、別のものを偽造することはできません"以前に見られた有効な値"以外の応答の値。

1

すべてのユーザーは、フォームを右クリックして[ソースの表示]を選択できます。つまり、マークアップ(隠されたフィールドはすべて)がユーザーに表示されます。

ユーザーに表示させたくない場合は、送信しないでください。サーバー側を永続化することを検討してください。

+0

1の詳細を参照してください:「あなたは、ユーザーがそれを表示したくない場合は、それを送信しません彼らへ。" – phoog

2

ユーザーには公開しないでください。情報として隠しフィールドを使用するのは安全ですか?

絶対にありません。ユーザーは隠しフィールドに格納された情報を見ることができるだけでなく、変更することができます。賢明な情報を隠しフィールドに保存しないでください。

1

これは、誰もがasp.netプロジェクトで行うことができるよくある間違いです。プログラマは、隠しフィールドを非表示にすることを忘れてしまったので、隠されたセキュリティ情報をクライアント側で見ることができます。問題は何

<asp:HiddenField ID="job_id" runat="server" /> 

:例えば、我々は次のようにある隠されたを

を提出してきましたか?この隠し値は、ブラウザ内のソースコードを見ることによって、クライアント側の他の人が見ることができます。あなたはこれを見るでしょう。

<input id="ctl00_ContentPlaceHolder2_job_id" type="hidden" value="102" name="ctl00$ContentPlaceHolder2$job_id"></input> 

これを修正するにはどうすればよいですか?これは正しいコードです。 Visible = "false"に設定するだけです。

<asp:HiddenField ID="job_id" runat="server" Visible="false" /> 

:)

明白なことを述べるため

wusit.com/blog/member-blog-details.aspx?upn=uE5GzSGY7UI=&bid=yiDsoLlp+Io=

+0

これはwebformsのためのもので、質問はMVCに関するものでした。 –

関連する問題