2016-04-30 9 views
0

Ich versuche, einen Weg zu sehen, ob die SQL-Injektion auf der Grundlage der Benutzereingabe korrekt ist, und wenn ja, löschen Sie diese Zeile. Zum Beispiel gibt der Benutzer 123 für eine ID-Nummer ein, wenn diese Zahl endet, die SQL-Anweisung "select * from student where idNumber =" + idNumber + ";" wäre richtig. Wenn es überprüft wird, dass es korrekt ist, würde ich dann eine andere Anweisung verwenden, um die Abfrage zu löschen. Mein Hauptproblem ist herauszufinden, wie es zu überprüfen ist, dass es korrekt ist.SQL-Injektionen (Java)

Danke!

+3

* "Versucht zu sehen, ob die SQL-Injektion korrekt ist" *? [SQL Injection] (https://en.wikipedia.org/wiki/SQL_injection) der vom Benutzer angegebenen Werte ist niemals korrekt, es sei denn, Sie möchten, dass Ihre Daten von böswilligen Hackern gestohlen und/oder gelöscht werden. Verwenden Sie eine 'PreparedStatement'. – Andreas

+0

Stimmen Sie mit @Andreas Kommentare überein. Warum möchten Sie die Richtigkeit der verwendeten Eingabe mit sql injection überprüfen? Verwenden Sie PreparedStatement, um die Benutzer-ID an die SQL-Adresse zu binden, und überprüfen Sie anschließend, ob die Abfrage eine Zeile zurückgibt. Wenn ja, führen Sie die Löschanweisung aus. Vermeiden Sie SQL Injection für die Verwendung von Produkten. –

+0

Wenn durch * "lösche die Abfrage" * Sie eigentlich "den Schüler zu löschen" bedeuten, warum nicht einfach die 'delete' Anweisung ausführen und sehen, ob etwas gelöscht wurde? Keine Zeitverschwendung bei einer Auswahl zuerst. – Andreas

Antwort

0
public static void CheckStudent(Connection con, String idNumber) throws SQLException { 
    Statement stmt = null; 
    String query = "select * from student where idNumber = " + idNumber + ";" 
    try { 
     stmt = con.createStatement(); 
     ResultSet rs = stmt.executeQuery(query); 
     if (!rs.isBeforeFirst()) { 
     //Here is where you do the check 
      System.out.println("No data"); 
     } 
    } catch (SQLException e) { 
     JDBCTutorialUtilities.printSQLException(e); 
    } finally { 
     if (stmt != null) { stmt.close(); } 
    } 
}