J'ai fais un petit formulaire tout con en java.
On tape un mot et il retourne les resultats via un
SELECT * FROM matableWHERE nom LIKE '" + monnom + "' ORDER BY ID"
Bref tout fonctionne...
SAUF que lorsque je tape % ou %qqchose, ca me retourne tout les resultats.
J'ai donc peur qu'il soit possible de faire de l'injection SQL
C'est pourquoi je voulais savoir si il existait en java une solution pour parer à cela, c'est a dire, faire passer la requete par un filtre ou je ne sais quoi....
pour la requete que tu utilises, l'injection n'est pas réellemnt un risque.
par contre, ça le serait si elle servait à l'authentification.
soit une requete du genre :
"select nom, prenom where login='"+ leLogin +"' and passe='"+ lePass+"'"
l'injection consiterai à mettre comme mot de passe dans le formulaire : '%20OR%20'1'='1
ce qui donne la requete :
select nom, prenom where login='toto' and passe='' OR '1'='1'
qui est toujour vraie
pour se faire, il faut donc utilise les Prepare Statements:
String laRequete="select nom, prenom where login=? and passe=?";
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
con = this.getConnection();
ps = con.prepareStatement(laRequete);
ps.setString(1, leLogin);
ps.setString(2, lePasse);
rs = ps.executeQuery();
// Constitution du resultset
if (rs.next()) {
String lenom = rs.getString("nom");
}
Salut,
je confirme que cela te pare pour 90% des injections ! C'est LA solution de base pour sécuriser un peu son code, en plus c'est plus rapide à l'exécution car compilé ;-)
Sache qu'on peut faire bien pire avec une injection du style shutdown de ton serveur ou prise de controle de ton serveur // :s
bonjour
j'ai deux bases de données, et je voudrais lier deux tables dans les deux bases de données, je vous explique mon problème:
la première table contient comme entités : nom, prenom, adresse.que je peux imprimer comme rapport PDF
la deuxième table continet comme entités : nom, sexe, fonction
et je voudrais qu'a chaque fois qu'un utilisateur tape l'age, ca s'injecte dans la deuxième table que j'imprimerai en PDF par la suite(rapport avec comme entitées : nom, sexe, age, fonction.
comment faire cette injection, sans toucher à la deuxième base de données, faire un programme en java ou autre qui pourra me resolver le problème.