Übergabe von Parametern an ein JDBC PreparedStatement
In JDBC werden vorbereitete Anweisungen verwendet, um SQL-Anweisungen effizient und sicher auszuführen, indem die Anweisung einmalig kompiliert wird es mehrmals mit unterschiedlichen Parametern ausführen. Bei der Übergabe von Parametern an eine vorbereitete Anweisung ist es wichtig, sicherzustellen, dass sie richtig eingestellt sind, um SQL-Injection-Angriffe und Anweisungsformatierungsfehler zu verhindern.
Problemerklärung
Der bereitgestellte Code versucht, eine Zeile aus einer Datenbanktabelle basierend auf dem userID-Parameter auszuwählen, der an den Validation-Klassenkonstruktor übergeben wird. Allerdings fehlt der Anweisung die Parametrisierung, was zu einer fehlerhaften Ausführung und potenziellen SQL-Injection-Schwachstellen führt.
Lösung
Um den Parameter userID korrekt zu übergeben, verwenden Sie die Methode setString() um den Wert für den Abfrageparameter festzulegen. Dadurch wird sichergestellt, dass die Anweisung richtig formatiert ist und vor SQL-Injection-Angriffen geschützt ist.
statement = con.prepareStatement("SELECT * FROM employee WHERE userID = ?"); statement.setString(1, userID);
Durch die Befolgung dieses Ansatzes wählt der bereitgestellte Code die Zeile aus der Datenbanktabelle basierend auf dem angegebenen Benutzer-ID-Parameter korrekt aus.
Best Practices
Das obige ist der detaillierte Inhalt vonWie übergebe ich Parameter sicher an ein JDBC PreparedStatement?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!