2012-03-26 10 views
0

Ich schreibe eine Webanwendung auf Asp.Net MVC 3. Angenommen, wir haben einige Seiten und ein @ Html.Hidden-Feld mit einigen Informationen darin. Kann ich sicher sein, dass der Benutzer diese Information nie in einem versteckten Feld erreichen wird? Kurz gesagt: ist es sicher, versteckte Felder für Informationen zu verwenden, die dem Benutzer nicht offenbart werden sollten?Verstecktes Feld, sichere Verwendung?

Antwort

7

Kann ich sicher sein, dass der Benutzer diese Informationen nie in einem versteckten Feld erreichen wird? Kurz gesagt: Ist es sicher, versteckte Felder für Informationen zu verwenden, die dem Benutzer nicht offengelegt werden sollten?

Absolut nicht. Es wird immer noch gesendet an den Client - es wird nur nicht in der gerenderten HTML sichtbar sein. Wenn jemand "Quelle anzeigen" verwendet, sieht er immer noch das Feld.

Ich schlage vor, Sie versuchen es für sich selbst zu sehen - erstellen Sie das versteckte Feld, dann sehen Sie die Seite in einem Browser und wählen Sie "View Source". Es ist immer gut, eine Vorstellung davon zu haben, wie das generierte HTML aussieht.

Wenn Sie müssen die Informationen an den Client senden, verschlüsseln und signieren ersten - auf diese Weise wird der Benutzer nicht in Klartext anzeigen kann, und sie werden nicht in der Lage sein, eine andere zu schmieden Wert in der Antwort, anders als "zuvor gesehen gültige Werte".

1

Jeder Benutzer kann mit der rechten Maustaste auf das Formular klicken und Quelle anzeigen auswählen. Dies bedeutet, dass alle Markups (ausgeblendete Felder) für den Benutzer sichtbar sind.

Wenn Sie nicht möchten, dass der Benutzer es sieht, senden Sie es nicht an sie. Ziehen Sie in Betracht, stattdessen auf der Serverseite zu bleiben.

+0

+1 für das Offensichtliche: „Wenn Sie der Benutzer nicht wollen, um es zu sehen, tun Sie es nicht senden zu ihnen." – phoog

2

Ist es sicher, versteckte Felder für Informationen zu verwenden, die dem Benutzer nicht angezeigt werden sollten?

Absolut nicht. Nicht nur, dass der Benutzer die Information, die in einem versteckten Feld gespeichert ist, sehen kann, er kann sie auch ändern. Speichern Sie niemals sinnvolle Informationen in einem versteckten Feld.

1

Dies ist ein häufiger Fehler, den jeder in einem asp.net-Projekt machen könnte. Der Programmierer hat vergessen, das versteckte Feld unsichtbar zu machen, so dass die versteckten Sicherheitsinformationen auf der Client-Seite angezeigt werden können.

zum Beispiel haben wir eine abgelegt versteckt, die wie folgt lautet:

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

Was ist das Problem? Nun, dieser versteckte Wert kann von anderen auf der Client-Seite angezeigt werden, indem der Quellcode im Browser angezeigt wird. Du wirst das sehen.

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

Wie wird das korrigiert? Dies ist der richtige Code. Sie müssen nur Visible = "false" setzen.

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

:)

Weitere Details zu

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

+0

Dies ist für Webformulare und die Frage war über MVC. –

Verwandte Themen