Was ist die beste alternative für den QueryString
Hörten wir viel über die Schwachstellen der Verwendung von Abfragezeichenfolgen und die möglichen Angriffe.
Abgesehen davon, dass gestern ein Fehler irritiert mich so sehr, dass ich nur entscheiden, zu beenden, mit Abfragezeichenfolgen, ich war vorbei, so etwas wie:
Dim url As String = "pageName.aspx?type=3&st=34&am=87&m=9"
Versuchte ich
Response.Write(url)
in der Umleitung wird die Seite gedruckt, die "Typ", wie 3, dann versuchte ich es in der Zielseite gedruckt 3,0....ich weiß, dies kann leicht behandelt werden, aber warum? ich meine, warum sollte ich pass 3 und müssen überprüfen, ob die 3.0 auf die nächste Seite laden, um mein handeln dementsprechend???
Also, was sollten wir verwenden? was ist der sicherste Weg, um pass-Variablen, Parameter,...etc, um die nächste Seite?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die beste /sicherste Weg, um pass-info, die zwischen den Seiten ist, die Sitzung zu nutzen.
Können Sie speichern jede Art von Objekt in der session gespeichert ist, auf der server-Seite, so dass der Benutzer nicht manipulieren wie ein query-string, viewstate, oder versteckte Feld
Könnten Sie Cross-Page-Postbacks.
Schauen Sie auch diese Artikel:
Gibt es viele Optionen, die Sie verwenden können, die meisten von Ihnen erfordert, dass Sie eine Strategie zur übergabe von Variablen zwischen Seiten.
In den meisten Projekten, die ich mit dieser Strategie, erstelle ich eine formVariables Klasse zu halten die derzeit aktiven Elemente. es hat Eigenschaften, die Sie brauchen, um passieren durch querystring. und ich speichern Sie diese Klasse in der Sitzung. und in meinem base-Seite lese ich es aus der Sitzung. also auf jeder Seite bekomme ich die Werte über das Objekt. die einzige negative Sache über diese Methode ist zur Bereinigung von Objekten, wenn Sie Ihre Arbeit beendet drauf..
hoffe, das hilft.
Ich würde sugest Sie vermeiden Sie die Verwendung von Session zur übergabe von Variablen zwischen Seiten wie diese bricht die stateless-Modell des web.
wenn Sie nur gespeichert, einige Werte in der session, die sich auf eine bestimmte Seite, dann verwendet der Benutzer Ihre Browser zurück Taste, um zurück zu der gleichen Seite welches sollte einen anderen Zustand, dann sind Sie nicht zu wissen über Sie.
Es führt zu der Möglichkeit der "reading session" Werte, die nicht relevant für die Seite, die der Benutzer gerade anzeigt - und Das ist potenziell sehr verwirrend für den Endbenutzer.
Sie wird auch laufen in Probleme mit dem Ablauf der Sitzung, wenn Sie auf Sie verlassen zu viel.
Ich persönlich versuchen zu vermeiden, mit session-wo möglich-der Vorzug der versteckten form Werte + - query-strings, der gelesen werden kann postback + navigation.
Sagte Sie:
Gibt es einen Unterschied zwischen "3,0" (drei Komma oh) und "3.0" (drei Punkt oh). Sie sagte auch, dass Sie wurden "nebenbei etwas wie".
In einem query-string, wenn Sie mehrere Werte in der gleichen Taste, werden Sie getrennt mit Kommas.
Als alle Werte werden als strings übergeben, es gibt keine Möglichkeit, dass ein " int "3" wird magisch dezimal "3.0", es sei denn, Sie analysieren, Sie als solche, wenn Sie es wünschen.
Ich würde gehen Sie zurück und überprüfen Sie, was Sie übergeben, in der URL, wenn es am Ende so etwas wie:
Dann, wenn Sie wieder zu Lesen
Erhalten Sie "3,0" wieder als Komma getrennte Liste der Werte in diesem Schlüssel.
Ersten, in asp .net können Sie mehrere strategys für die übergabe von Werten zwischen Seiten. Sie haben viewstate zu, jedoch ist der viewstate speichern Sie den Wert und die Verwendung in verschiedenen Szenarien , die Sie können es verwenden, auch. Sitzungen statt, und natürlich per post in einem Formular.
Wenn Ihr problem ist die Sicherheit, die ich empfohlen, Sie zu erstellen 2 Benutzer für accesing der Daten. Ein Benutzer mit nur-Lesen-Zugriff, das für den Zugriff auf die Seiten ( Sql-Injektion verhindern ) und validieren die Daten werfen den querystring. Und Eine mit Schreibzugriff für Ihre private zone.
Sorry, für meine unreadeable Englisch.
Ich gerne query-string verwenden, wie ich möchte, dass Benutzer in der Lage, Lesezeichen Dinge wie gemeinsame Recherchen und die wie. E. g. wenn eine Seite arbeiten können stand-alone-dann möchte ich es, um in der Lage zu arbeiten stand-alone.
Verwendung von Sitzungs - /cross-page-postbacks ist cool, wenn Sie benötigt werden kommen aus einer anderen Seite, für die Seite du bist auf Sinn zu machen, aber ansonsten habe ich in der Regel finden Abfragezeichenfolgen zu sein, die bessere Lösung.
Nur daran erinnern, dass query-strings sind nicht überprüfte Eingabe und behandeln Sie mit Vorsicht, die Sie behandeln würde jeder nicht überprüfte Eingaben.
Wenn Sie die richtige Sicherheits-checks auf jeder Seite laden, dann wird der querystring ist in Ordnung und flexibelste IMHO.
Bieten Sie die Flexibilität, wie der Eintrag poitn auf eine Seite ist nicht abhängig von der sender-wie auch in einigen anderen Optionen. Sie rufen eine Seite von irgendeinem Punkt innerhalb Ihrer eigenen app oder extern, wenn nötig über Abfragezeichenfolgen. Sie können auch Lesezeichen gespeichert werden und auch manuell geändert, zum testen oder zur direkten manipulation.
Erneut die Taste hinzufügen ordnungsgemäße Sicherheit und Validierung der querystring, und nicht die Verarbeitung der blind. Beachten Sie, dass die seucirty darüber hinaus geht mit Bearbeiten-oder lese-Zugriff, abhängig von den Daten und Benutzer, haben Sie möglicherweise nicht Zugriff auf die Daten mit thos paranters überhaupt in Fällen, in denen die Daten gehören und privat, um bestimmte Benutzer.
Wir haben versucht, verschiedene Methoden, in einem Versuch zu verbergen, der querystring am Ende aber wieder, es ist einfacher zu tun, zu Debuggen und zu verwalten.