Empfohlen (kostenlos): SQL-Tutorial
SQL-Injection bedeutet, dass die Webanwendung die Rechtmäßigkeit der Benutzereingabedaten nicht beurteilt oder diese nicht streng filtert. Der Angreifer kann sie im Voraus im Web definieren Anwendung Fügen Sie am Ende der Abfrageanweisung zusätzliche SQL-Anweisungen hinzu, um illegale Vorgänge ohne Wissen des Administrators durchzuführen, wodurch der Datenbankserver dazu verleitet wird, nicht autorisierte beliebige Abfragen auszuführen und so weitere entsprechende Dateninformationen zu erhalten.
1. SQL-Injection-Fall
Simuliert einen SQL-Injection-Fall der Benutzeranmeldung. Der Benutzer gibt den Benutzernamen und das Kennwort auf der Konsole ein und verwendet dann die Verkettung von Anweisungszeichenfolgen, um die Benutzeranmeldung zu realisieren.
1.1 Erstellen Sie zunächst die Benutzertabelle und die Daten in der Datenbank. Es wird die Meldung „Anmeldung erfolgreich“ angezeigt. „
1.4 Anmeldung fehlgeschlagen.“ 1.5 Simulieren Sie die SQL-Injection
Gespleißte Zeichenfolge Es gibt oder '1' = '1' in der konstanten Einrichtungsbedingung, sodass alle Datensätze abgerufen werden, auch wenn der vorherige Benutzer und das vorherige Kennwort nicht vorhanden sind, sodass die Eingabeaufforderung „Anmelden“ angezeigt wird erfolgreich"
1.6 SQL-Syntaxfehler
Verwendung Die Spleißmethode verursacht auch SQL-Syntaxfehler und andere Fehler, wie z. B.
2. Lösung
Mit der Statement-Methode können Benutzer Ändern Sie die wahre Bedeutung des ursprünglichen SQL durch String-Splicing, was zu einem SQL-Injection-Risiko führt. Um die SQL-Injection zu lösen, können Sie zur Verarbeitung das Vorverarbeitungsobjekt PreparedStatement anstelle von Statement verwenden. 1.1 Ein neues Programm schreiben , bitte erneut eingeben“
2.4 SQL-Injection simulieren
Entsprechend der vorherigen Situation wird die SQL-Injection nicht mehr ausgeführt.
2.5 SQL-Syntaxfehler simulieren
Nach Verwendung der Vorverarbeitungsklasse führt die Eingabe von Inhalten mit einfachen oder doppelten Anführungszeichen nicht mehr zu SQL-Syntaxfehlern
3. Zusammenfassung
Der Hauptunterschied zwischen
Statement und PreparedStatement lauten wie folgt:
Statement wird zur Ausführung statischer SQL-Anweisungen verwendet.
PrepareStatement ist ein vorkompiliertes SQL-Anweisungsobjekt Parameter „?“ und kann Parameterwerte für „?“ während der Ausführung dynamisch festlegen
PrepareStatement kann die Anzahl der Kompilierungen reduzieren und die Datenbankleistung verbessern
Das obige ist der detaillierte Inhalt vonErfahren Sie mehr über SQL-Injection und wie Sie es beheben können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!