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.
(Empfohlenes Tutorial: MySQL-Video-Tutorial)
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.
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"); }
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!