Frage

Was sind die besten Möglichkeiten (oder zumindest am häufigsten verwendeten Möglichkeiten) in ASP (VBScript) für die Eingabe der Handhabung? Meine Hauptanliegen sind HTML / JavaScript-Injektionen & SQL-Injektionen. Gibt es ein Äquivalent zu PHP htmlspecialchars oder addslashes, et cetera? Oder muss ich es tun manuell mit so etwas wie String ersetzen Funktionen?

War es hilfreich?

Lösung

Unter dem Strich ist dies:

  1. Immer HTML-kodieren Benutzereingabe, bevor Sie es auf Ihrer Seite schreiben. Server.HTMLEncode() tut das für Sie.
  2. Verwenden Sie immer parametrisierte Abfragen mit einer Datenbank zu verbinden. Die ÀDODB.Command und ADODB.CommandParameter Objekte sind die richtige Wahl hier.
  3. Verwenden Sie immer das Dienstprogramm URLScan und IIS Lockdown auf dem IIS-Server, der die Seite macht, es sei denn, sie sind Version 6 und höher, die diese Werkzeuge nicht mehr erforderlich ist.

Wenn Sie Punkte kleben 1 und 2 sklavisch , kann ich nicht viel denken, die schief gehen können.

Die meisten Schwachstellen kommen nicht richtig kodiert Benutzereingabe oder Gebäude SQL-Strings von ihm. Wenn Sie aus irgendeinem Grunde bis zu dem Punkt kommen, wo HTML-Codierung von Benutzereingaben im Weg stehen, haben Sie einen Designfehler in der Anwendung gefunden.

Andere Tipps

ich Tomalaks Liste einen weiteren Punkt hinzufügen würde.

Vermeiden Verkettung von Feldwerten in SQL-Code. Das heißt, in einigen Fällen eine gespeicherte Prozedur eine SQL in einem String bauen kann, um anschließend auszuführen. Das ist in Ordnung, wenn nicht ein Textfeldwert als Teil seiner Konstruktion verwendet wird.

ein Befehlsparameter kann SQL-Code geschützt werden, um einen Wert eingeben entworfen von in Ausführung unerwünschte SQL fallen wird, aber es ermöglicht solche unerwünschten SQL-Daten in der Datenbank zu werden. Dies ist ein erster Ebene vunerability. Eine zweite Ebene Injektion vunerability liegt vor, wenn der Wert des Feldes dann in einigen SQL String-Verkettung innerhalb einer gespeicherten Prozedur verwendet wird.

Eine weitere Überlegung ist, dass dies nur ein minimaler Schutz ist. Alle sein Tun rendert Angriff harmlos versucht. Doch in vielen Fällen kann es besser sein, auf diese ein System hinzuzufügen, die Altogther solche Dateneingabe verhindert und / oder verändert Administratoren auf ein Potential-Injection-Angriff.

Dies ist, wo die Eingabevalidierung wichtig. Ich weiß nicht von irgendwelchen Tools, die dies für Sie tun, aber ein paar einfache reguläre Ausdrücke helfen könnte. Zum Beispiel: „<\ w +“ würde den Versuch erkennen, einen HTML-Tag in dem Feld enthalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top