„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Ist es eine zuverlässige Verteidigung gegen die SQL -Injektion zu entkommen?

Ist es eine zuverlässige Verteidigung gegen die SQL -Injektion zu entkommen?

Gepostet am 2025-03-23
Durchsuche:244

Is Escaping Single Quotes a Reliable Defense Against SQL Injection?

Im Bereich der Softwareentwicklung ist die Verhinderung von SQL -Injektionsangriffen von entscheidender Bedeutung. Während parametrisierte SQL -Abfragen die beste Möglichkeit sind, Eingaben zu beseitigen, verwenden einige Entwickler immer noch den Abwehrmechanismus, der einzelne Zitate entgeht und Benutzereingaben in einzelnen Zitaten als Alternative einschließt.

fehlerhafte Fluchttechnik

Die Methode beinhaltet das Ersetzen von einzelnen Zitaten in Benutzereingaben durch doppelte einzelne Zitate und das Einschließen der gesamten Zeichenfolge in einzelnen Zitaten:

sSanitizedInput = "'" & Replace(sInput, "'", "''") & "'"
Das Prinzip dieser Technik ist, dass alle vom Benutzer eingegebenen einzelnen Zitate effektiv neutralisiert werden, um zu verhindern, dass die Zeichenfolge abgeleitet wird. Daher wird jeder andere Charakter, wie ein Semikolon oder ein Prozentzeichen, Teil der Zeichenfolge und wird nicht als Befehl ausgeführt.

Injektion Verwundbarkeit ]

Diese Technik kann jedoch keine Fälle verarbeiten, in denen die Benutzereingabe selbst doppelte einzelne Zitate enthalten kann. In diesem Fall endet die Zeichenfolge und der Rest der Eingabe kann als SQL -Befehle ausgeführt werden.

Beispiel input

Um dies zu veranschaulichen, betrachten Sie die folgende Benutzereingabe:

'SensitiveData' HAVING AMOUNT>2000 OR ''=''
Nach der Ausführung wird der Code:

SELECT * FROM ACCOUNT WHERE NAME='SensitiveData' HAVING AMOUNT>2000 OR ''=''

Weitere Überlegungen

Es ist wichtig zu beachten, dass es in dieser Fluchttechnik andere Schwachstellen gibt, einschließlich:

Kann nicht gegen alle Arten von SQL -Injektionsangriffen verteidigen, wie z. B. Angriffe mit Kommentaren oder anderen Angaben -Terminatoren.

    Einführung in Leistung und Wartungsaufwand.
  • erschwert den Code zu lesen und zu verstehen.
  • Best Practices

verlassen

Verwenden Sie parametrisierte SQL-Abfrage oder JDBC-Vorbereitungsanweisungen.

Nur erwartete Eingabewerte und Formate (Whitelisten) sind zulässig.
  • Blacklists werden nur dann verwendet, wenn sie unbedingt erforderlich sind und nach anderen Minderungsmaßnahmen implementiert sind.
  • Vermeiden Sie dynamische SQL- und String -Verkettung.
  • Erwägen Sie, gespeicherte Prozeduren mit begrenzten Datenbankberechtigungen zu verwenden.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3