2008-12-09 14 views
5

Ich muss alle meine ASP-Code überprüfen, um SQL-Injektion zu verhindern.Kann eine Sitzung gefälscht werden?

Sollte ich das Sitzungsobjekt auch überprüfen?

Wie könnte eine Sitzung entführt werden?

Vielen Dank !!

+0

Warum diese Frage abgelehnt? Anders als Grammatikfehler denke ich, dass es eine legitime Frage ist. – Salamander2007

+0

Sie wurden wahrscheinlich abgelehnt, weil der Fragetext nicht fokussiert ist. Das Thema zeigt an, dass Sie über Hijacking sprechen wollen, aber der Text spricht über SQL-Injection. – AnthonyWJones

Antwort

3

Sitzung kann entführt werden. Wenn ich mich richtig erinnere, unterstützt Classic ASP nur die auf Cookies basierende Sitzungskennung. Wenn jemand in der Lage war, diesen Cookie zu stehlen, kann er dieselbe Sitzung wie der berechtigte Benutzer erhalten.

Sollten Sie auch das Session-Objekt überprüfen? das hängt davon ab. Wenn Sie sicherstellen können, dass alle in Sitzungen gespeicherten Objekte "sicher" sind (die Eingabe wurde bereinigt), können Sie das Sitzungsobjekt überspringen. Wenn Sie irgendwo in Ihrer Anwendung Daten von unsicheren Quellen erhalten und sie in das Session-Objekt einfügen, müssen Sie dies ebenfalls überprüfen.

3

Um SQL Injection zu vermeiden, verwenden Sie parametrisierte Abfragen, anstatt die SQL-Abfragen durch Verketten von Strings zu erstellen. Session-Hijacking ist ein völlig anderes Thema. Dies kann dadurch erschwert werden, dass der Sitzungscookie bei jeder Anforderung geändert und mithilfe von HTTPS vollständig vermieden wird. Ein verwandtes (und größeres) Problem ist die siteübergreifende Anfragefälschung (nachschlagen).

1

Nun, Sie müssen nur wirklich Benutzereingaben sichern. Die Frage, die Sie sich stellen müssen, lautet also: "Sind diese Daten von Benutzereingaben gekommen?" Wenn ja, müssen Sie SQL-Parameter verwenden.

In einem größeren Maßstab, und unter Berücksichtigung, dass Sie einzelne Methoden & Klassen haben, um den Datenzugriff durchzuführen, sollten Sie SQL-Parameter für jeden Textparameter, den Sie an Ihre SQL bereitstellen. In diesem Szenario sind SQL-Parameter nicht wirklich notwendig, denn wenn Sie eine Zahl als Methodenparameter erhalten, gibt es keine Möglichkeit, eine SQL-Injektion zu haben.

Im Zweifelsfall jedoch SQL-Parameter verwenden.

1

Sitzungsvariablen werden im Speicher auf dem Server gespeichert. Nur eine Cookie-ID ist auf dem Client gespeichert. Sie müssen sich keine Gedanken über Variablen in der Sitzung machen, es sei denn, sie stammen vom Client. Oftmals kann es jedoch einfacher sein, alle Variablen zu überprüfen, die für die SQL-Injektion an die Datenbank übergeben werden.

Verwandte Themen