Classic ASP SQL-Injection
Ich habe vor kurzem geerbt, eine klassische asp-website mit einer Tonne von inline-SQL-insert-Anweisungen, die anfällig für SQL-injection-Angriffe.
Diese insert-Anweisungen ausgeführt, die über die ADO-Befehl-Objekts.
Wird die Einstellung des ADO-Command-Objekts Vorbereitet-Eigenschaft auf true sicherzustellen, dass die Abfrage parametrisiert wird, vor der Ausführung, damit Minderung der Gefahr von SQL-injection?
- mögliche Duplikate von Classic ASP SQL-Injection-Schutz
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Link sollte hilfreich sein.
Classic ASP SQL-Injection Schutz
Nicht, wenn Sie erstellen eine SQL-Zeichenfolge mit den Werten, die Sie bekommen, direkt von "außen", dann ein "prepared statement" wird dir nicht helfen.
einen
ist noch ärger.
Der einzige Weg, dies zu lösen, ist durch die Verwendung von Parametern in der Abfrage.
Können Sie auch einen Blick auf eine asp-classic open-source-Projekt namens "Owasp stinger'. Das hilft nicht nur mit Sql-injection, aber header-injection und viele andere Sicherheitsprobleme gemeinsam ist allen web-apps.
http://www.owasp.org/index.php/Classic_ASP_Security_Project
Hier ist ein weiterer guter link und Beispiel.
http://blogs.iis.net/nazim/archive/2008/04/28/filtering-sql-injection-from-classic-asp.aspx
In der Vergangenheit erschaffen wir nur ein paar Funktionen zu behandeln, die außerhalb input für SQL-injections und XSS. Dann langsam realisierten wir alle inline-SQL-gespeicherten Prozeduren.
Was würde ich vorschlagen, Sie tun, ist schreiben eine Funktion zum bereinigen der Benutzer-Eingang, dann laufen alle request-Variablen durch, die. Wenn ich schrieb meine ich habe Sachen wie:
Meisten SQL-injection-versuchen würde, so etwas wie
' or 1=1 or a='
also den SQL-code wäre :
So entweicht das einfache Anführungszeichen ist der real big one Sie sich sorgen machen müssen.
oCmd.Parameters.Append oCmd.CreateParameter(...)
Anweisungen, um Ihren code, und ehrlich in Situationen wie dieser denke ich, sind Sie besser dran mit Schwerpunkt auf Qualität statt Geschwindigkeit, besonders wenn Sie nicht Zeit haben, um die Arbeit zweimal.