Wie Injektionen in ASP / VBScript zu verhindern?
-
07-07-2019 - |
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?
Lösung
Unter dem Strich ist dies:
- Immer HTML-kodieren Benutzereingabe, bevor Sie es auf Ihrer Seite schreiben.
Server.HTMLEncode()
tut das für Sie. - Verwenden Sie immer parametrisierte Abfragen mit einer Datenbank zu verbinden. Die
ÀDODB.Command
undADODB.CommandParameter
Objekte sind die richtige Wahl hier. - 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.