SQL Injection verhindern ohne z.B. prepareStatement

Presler

Mitglied
Mir ist schon klar das man SQL Injection am einfachsten verhinden kann durch z.B.

Code:
 stmt = conn.prepareStatement("INSERT INTO person (name, email) values (?, ?)");
stmt.setString(1, name);
stmt.setString(2, email);

bzw. in Spring
Code:
getSimpleJdbcTemplate()             .update(                     
"insert into table "                             + 
"(column1, column2, column3, column4, column5) VALUES "                             + 
"(:column1, :column2, :column3, :column4, :column5)",                     
new MapSqlParameterSource().addValue("column1",  value1).
addValue("column2",                             value2).
addValue("column3",                             value3).
addValue("column4",                             value4).
addValue("column5", value5));

Aber ich suche eine Möglichkeit mit der man in Java (mit oder ohne Spring Framework) mir einen einzelnen Wert vor SQL Injection schützt also in der Form:

angelehnt an Beispiel 1:
Code:
String sql = "INSERT INTO person (name, email) values (" + 
                    sqlinjectionsafe(name) + ", " +  sqlinjectionsafe(email) + ")");

angelehnt an Beispiel 2:
Code:
String sql = "INSERT INTO person (name, email) values (" + 
                      sqlinjectionsafe(name) + ", " +  sqlinjectionsafe(email) + ")");

getSimpleJdbcTemplate().update( sql ); // String sql ist jetzt sql injection sicher

Wie könnte man soetwas realisieren? Gibt es evtl. eine solche Funktion schon?
 
Zuletzt bearbeitet von einem Moderator:
M

maki

Gast
Sowas git es, nennt sich eben PreparedStatement, was spricht denn dagegen es zu verwenden?
Ansonsten kannst du immer deine eigene Konvertierungs-/Maskierungsroutine schreiben, allerdings ist die Chance dass diese eben Fehler enthält und damit nicht wirklich vor SQL Injections schützt recht hoch.
 
G

Gast2

Gast
Wenn du sehr genau weißt was du erwartest wäre es denkbar, z.B. wenn du eine PLZ erwartest kannst du mit einer RegEx prüfen das es nur 5 Zahlen sind.

Aber generell? Nein! Erst recht bei Textdaten solltest du das lassen und dich am besten komplett bei allem auf die PreparedStatements verlassen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N SQL-Injection verhindern OHNE PreparedStatements Datenbankprogrammierung 11
B JPA -> Dynamische WHERE Clause / SQL Injection möglich? Datenbankprogrammierung 11
M executeQuery SQL Injection Datenbankprogrammierung 23
G SQL Injection - Wie Eingabe filter? Datenbankprogrammierung 3
Kotelettklopfer SQLite Verhindern von doppelter Statement Ausführung Datenbankprogrammierung 25
F MySQL Doppelte Einträge verhindern Datenbankprogrammierung 2
D Mit Trigger Tupel löschen verhindern Datenbankprogrammierung 3
J OutOfMemoryError - Wie verhindern? Datenbankprogrammierung 4
G H2: Erstellen von Datenbanken verhindern Datenbankprogrammierung 2
G Doppeleinträge in Access auf anderem Weg verhindern. Datenbankprogrammierung 4
G SELECT Name= " " verhindern Datenbankprogrammierung 5
S MongoDB löschung ohne Cascade Datenbankprogrammierung 1
P Derby/JavaDB Datenbanktabelle erweitern, ohne Tabelle zu ändern Datenbankprogrammierung 6
D OpenJPA Zeichenvorrat in DB & Fremdschlüssel ohne Entität Datenbankprogrammierung 5
B Inner Join ohne SQL Syntax Datenbankprogrammierung 2
M MySQL Verbindung zum Server aufbauen ohne DB ansprechen Datenbankprogrammierung 2
ruutaiokwu sql abfrage mit rekursion, mit oder ohne cte... Datenbankprogrammierung 5
X MySQL DB-verbindung ohne JDBC/ODBC Datenbankprogrammierung 1
D Hibernate CreateQuery ohne Result Datenbankprogrammierung 7
R PreparedStatement ohne Parameter? Datenbankprogrammierung 4
eskimo328 Datenbankverbindung ohne Passwort im Quelltext bei einer offline Anwendung Datenbankprogrammierung 14
Kenan89 Insert ohne Auswirkung Datenbankprogrammierung 7
D MySQL User mit nur mit lokalen Lesezugriff und ohne Phpmyadmin Datenbankprogrammierung 4
J Derby/JavaDB Zugriff ohne Entwicklungsumgebung Datenbankprogrammierung 5
M MySQL Bilddatei in MYSQL DB abspeichern, ohne lokal auf HDD zwischenzuspeichern Datenbankprogrammierung 3
Screen Ich suche eine SQLDatenbank ohne JDBC-Treiber Datenbankprogrammierung 12
T mdb Verbindung ohne Registrierung der Datenquelle im OS Datenbankprogrammierung 14
V MySQL MsSql ohne Server nutzen? Datenbankprogrammierung 2
NoXiD Access Datenbank in java einbinden ohne ODBC treiber zu erstellen Datenbankprogrammierung 5
T MySQL Zugriff ohne Angabe der Datenbank Datenbankprogrammierung 3
B MySQL-Dumpdatei ohne Batchdatei wieder einlesen Datenbankprogrammierung 48
M Mysql Delete ohne Where Klausel untersagen Datenbankprogrammierung 8
P JPA Datenbanksettings ohne persistence.xml Datenbankprogrammierung 3
E DB installieren ohne Installationsroutine Datenbankprogrammierung 4
V Delete From Tabelle, ohne vorher die Tabelle zu kennen Datenbankprogrammierung 5
P Datenbank für Java Anwendung wie SQLite ohne Installation Datenbankprogrammierung 4
M MySQL: Spalte auf einmal füllen, ohne iterieren zu müssen Datenbankprogrammierung 4
S Datenbank zugriff optimieren - zugriff ohne cursor? Datenbankprogrammierung 7
J HSQLDB ohne JDBC Datenbankprogrammierung 8
L einfache Datenbankabfrage ohne erstes Element Datenbankprogrammierung 2
D An Access Datenbank andocken ohne sie beim System anzumelden Datenbankprogrammierung 3
D ODBC Zugriff auf MDB-Datenbank, Insert Into ohne Funktion Datenbankprogrammierung 2
G Access mit Java OHNE ODBC Datenbankprogrammierung 7
B ResultSet ohne Datenbank erstellen Datenbankprogrammierung 4
G Datenbank ohne Server Datenbankprogrammierung 28
C Datenbankanbindung ohne ODBC JDBC Brücke Datenbankprogrammierung 5
R Datenbank ohne Installation (Multiuser) Datenbankprogrammierung 9
E jdbc Verbindung ohne Einrichten einer DSN möglich ? Datenbankprogrammierung 3
clemson [SQL] Abfrage --> alle Gruppen, ohne MailConfig Datenbankprogrammierung 10
O Datenbankzugriff "ohne" Server ? Datenbankprogrammierung 9
A Java und Accessdateien ohne ODBC? Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben