2009-05-04 4 views
2

Ich muss URL Request.Querystrings nur auf GET, nicht auf Postback analysieren, richtig?Kann sich eine URL beim Postback ändern?

if(!IsPostBack) 
{ 
    Viewstate["magic_number"] = Parse(Request.Query); 
} 

Der Benutzer kann nicht erwartet werden, die URL in der Anforderung für nachfolgende Postbacks zu ändern, oder können sie?

Motivation für Frage-- Ich kontrolliere nicht das Javascript Snippet, das das Postback tut, also ist es etwas von Blackbox zu mir.

Antwort

2

Die URL ist nicht wird voraussichtlich geändert werden. Bedenken Sie jedoch, dass jedes Postback eine neue Instanz Ihrer Seitenklasse ist. Wenn Sie also die Ergebnisse nicht irgendwo auf der ersten Ansicht gespeichert haben, müssen Sie darauf vorbereitet sein, dies bei der nächsten Ansicht erneut zu tun und so weiter. In diesem Fall haben Sie es in ViewState gespeichert, und das sollte in Ordnung sein.

Ich vermute jedoch, dass Sie die Frage nicht stellen würden, außer Sie hätten ein Verhalten beobachtet, das Sie zu einem anderen Verdacht geführt hat. Also lassen Sie sich für einen Moment überlegen, was Dinge dazu führen könnten, dies zu brechen:

  • Es ist möglich zu Viewstate auf dem Client zu ändern, wo Sie Ihre Ergebnisse gespeichert (wenn auch nicht trivial und definitiv nicht zu empfehlen).
  • Sie können ein Postback vor der ersten Seitenansicht vortäuschen.
  • Sie können Javascript verwenden, um die veröffentlichte URL zu ändern.

Aber für alle diese Dinge würden Sie sicherlich wissen, wenn Sie etwas dafür geschrieben haben.

1

Ihre Annahme ist richtig, die URL wird nicht erwartet, dass sie in Subsequent Postbacks geändert wird, und Sie müssen die Abfragezeichenfolge nur für GET analysieren, was beim ersten Laden der Seite geschieht.

1

Die URL ändert sich normalerweise nicht für ein Postback.

Es ist natürlich möglich, ein Tool wie FireBug zu verwenden, um die URL im Formular-Tag vor dem Postback zu bearbeiten, aber dann möchten Sie wahrscheinlich nicht den Wert, den der Benutzer injiziert, aber den ursprünglichen Wert.

0

Wie andere darauf hingewiesen haben, wird sich die URL nicht ändern. Natürlich, wenn wir in einer perfekten Welt leben würden, würden Sie niemals E-Mail-Spam bekommen und niemand würde jemals versuchen, Ihre Website schädlich zu machen.

In der realen Welt sollte man erwarten, dass ein Angreifer versuchen, Ihre Website kapern und muß mit Dingen wie injection attacks

betroffen sein sollten Sie nie keine Annahmen getroffen werden, dass die Daten auf einem Postbacks empfangen ist gültig .