Heim > Datenbank > MySQL-Tutorial > Was ist der Injektionsfehler der MySQL-Anweisung?

Was ist der Injektionsfehler der MySQL-Anweisung?

青灯夜游
Freigeben: 2020-10-20 14:18:57
Original
2384 Leute haben es durchsucht

Der Injektionsfehler der MySQL-Anweisung besteht darin, die externe Schnittstelle einiger Datenbanken zu verwenden, um Benutzerdaten in die eigentliche SQL-Sprache einzufügen, wodurch der Zweck erreicht wird, in die Datenbank und sogar in das Betriebssystem einzudringen. Angreifer nutzen es, um Daten in der Datenbank zu lesen, zu ändern oder zu löschen, an Benutzerinformationen, Passwörter und andere Informationen in der Datenbank zu gelangen oder, was noch schlimmer ist, Administratorrechte zu erlangen.

Was ist der Injektionsfehler der MySQL-Anweisung?

(Empfohlenes Tutorial: MySQL-Video-Tutorial)

SQL-Injection-Fehler (SQL-Injection)

SQL-Injection besteht darin, die externe Schnittstelle einiger Datenbanken zu verwenden, um Benutzerdaten in die eigentliche Datenbankbetriebssprache einzufügen ( SQL), wodurch der Zweck erreicht wird, in die Datenbank und sogar in das Betriebssystem einzudringen. Dies liegt hauptsächlich daran, dass das Programm die vom Benutzer eingegebenen Daten nicht streng filtert, was zur Ausführung illegaler Datenbankabfrageanweisungen führt.
„MySQL in einfachen Worten“

Gefahren
Angreifer nutzen es, um Daten in der Datenbank zu lesen, zu ändern oder zu löschen, an Benutzerinformationen und Passwörter in der Datenbank zu gelangen und, was noch schlimmer ist, Administratorrechte zu erlangen.

? Ursprünglich sollte es keinen solchen Benutzer geben, aber das Ergebnis ist, dass die Anmeldung erfolgreich war, weil „1 = 1“ nicht mehr der Inhalt im Benutzernamen ist, sondern jetzt der Inhalt in der SQL-Anweisung Egal was passiert, das Ergebnis ist wahr, was bedeutet, dass Sie kein Passwort eingeben müssen. Hier entsteht ein Sicherheitsproblem.

Lösung

1. PrepareStatement

 //注入式错误
    public static void test3(String name,String passward){
        Connection connection = null;
        Statement st = null;
        ResultSet rs = null;
        try {
            // 加载JDBC 驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 获得JDBC 连接
            String url = "jdbc:mysql://localhost:3306/tulun";
            connection = DriverManager.getConnection(url,"root","123456");
            //创建一个查询语句
            st = connection.createStatement();
            //sql语句
            String sql = "select * from student where name = '"+ name+"' and passward = '"+passward+"'";
            rs = st.executeQuery(sql);

            if(rs.next()){
                System.out.println("登录成功。");
            }else{
                System.out.println("登录失败。");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
       
        test3("wjm3' or '1 = 1","151515");

    }
Nach dem Login kopieren

Egal, was der Namensparameter im obigen Code ist, es ist nur der Namensparameter und wird nicht als Teil der SQL-Anweisung ausgeführt weil es sicherer ist. Was ist der Injektionsfehler der MySQL-Anweisung?
2. Definieren Sie Ihre eigene Funktion zur Überprüfung.

Organisieren Sie die Daten, um sie gültig zu machen. Die derzeit beste Lösung besteht darin, einfach die von Benutzern übermittelten oder sich ändernden Daten zu klassifizieren und reguläre Ausdrücke anzuwenden, um die von Benutzern bereitgestellten Eingabedaten streng zu erkennen und zu überprüfen. Tatsächlich müssen Sie nur illegale Symbolkombinationen filtern, um bekannte Angriffsformen zu verhindern. Wenn neuere Angriffssymbolkombinationen entdeckt werden, können diese Symbolkombinationen auch hinzugefügt werden, um weiterhin neue Angriffe zu verhindern. Insbesondere das Leerzeichen und das Symbol, das Schlüsselwörter trennt, haben die gleiche Wirkung, wie zum Beispiel „/**/“. Wenn dieses Symbol erfolgreich gefiltert werden kann, können viele Injektionsangriffe nicht stattfinden und müssen ebenfalls gefiltert werden gleichzeitig ist die hexadezimale Darstellung „%XX“.

Das obige ist der detaillierte Inhalt vonWas ist der Injektionsfehler der MySQL-Anweisung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage