2017-10-31 2 views
-2

Ich habe Klassifikator zu erfassen, indem Java programmiert zu erkennen und SQL-Injection zu verhindern, arbeitet der Klassifikator durch Pass von Satz „zwischen zwei doppelten Anführungszeichen“ von Datensatz zu bestimmen, welche die Anforderung SQL-Injection oder No.I ist Diese Anwendung muss in webbasiert konvertiert werden. Wenn Benutzer beispielsweise 3 oder 2 = 2 eingeben, muss die Anwendung diesen Satz von der URL und nicht von meiner Anwendung wie gesagt lesen (Satz "zwischen zwei doppelten Zitaten")Wie SQL-Injection in Java

Beispiel:

String examplesql = "1' or 1=1"; 
String outputsql = nb.predict(examplesql); 
System.out.format("The Traffic \"%s\" was classified as \"%s\".%n", examplesql, outputsql); 
+0

Was Ihre Frage genau verwenden kann? – roelofs

Antwort

2

Verwenden Sie die PreparedStatement Klasse anstatt manuelle Überprüfung zu tun. Dies bedeutet, dass der Treiber automatisch die Zeichenkette, die Sie ihm geben, nicht findet und ein SQL-Injection-Versuch fehlschlägt und alle Daten, die sie liefern, in das Datenbankfeld übertragen werden. Weitere Informationen zur Verwendung finden Sie unter https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html und https://docs.oracle.com/javase/8/docs/api/java/sql/PreparedStatement.html.

Um einen Parameter zu erhalten, die Sie

gesendet wurde
// create connection 
String passed = request.getParameter("data"); 
PreparedStatement statement = connection.prepareStatement("INSERT INTO table (field1) VALUES (?)"); 
statement.setString(1, passed); 
statement.executeQuery();