cs_manu00
Messages postés93Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention25 octobre 2006
-
14 févr. 2006 à 14:26
nodnod32
Messages postés17Date d'inscriptionsamedi 14 février 2009StatutMembreDernière intervention25 juin 2009
-
9 mars 2009 à 12:47
hello,
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....
shaiulud
Messages postés404Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention15 juillet 201422 14 févr. 2006 à 16:05
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");
}
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 14 févr. 2006 à 19:37
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
nodnod32
Messages postés17Date d'inscriptionsamedi 14 février 2009StatutMembreDernière intervention25 juin 2009 9 mars 2009 à 12:47
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.