Bonjour
Je subis actuellement des injection sql.
Est ce que quelqu'un pourrai contact avec moi pour voir d'ou sa provient ?
Merci
Bonjour
Je subis actuellement des injection sql.
Est ce que quelqu'un pourrai contact avec moi pour voir d'ou sa provient ?
Merci
Comment vous savez que vous subissez des attaques par Injection SQL ?
et dans quel page de votre site sont produites ces attaques ?
car il faut savoir quel page pour corriger cette page il faut contrôler tout ce qui passe par vos variable avec se code :
c'est en ajoutant mysql_real_escape_string et htmlspecialchars dans la variable ou vous subissez vos attaque pour vous protéger.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $variable=mysql_real_escape_string(htmlspecialchars($_POST['nom']));
En plus des conseils de Devildz, il faut bien garder en tête le principe fondamental : Never trust user input !
Et attention, ce qu'on appelle user input, ce ne sont pas uniquement les valeurs récupérées en GET ou en POST. Un cookie, une variable de session, ...
Toute valeur qui n'a pas été définie dans le code qui l'utilise doit être vérifiée !
Ensuite, tant que cela est possible, il faut définir un format strict pour le genre de données attendues.
Si on attend un nombre, on ne doit pas autoriser d'autres caractères que des chiffres, idem pour les chaines qui doivent être filtrées au maximum.
Salam ; si sa peut t'aidé je vous propose ce lien http://www.php.net/manual/fr/securit...-injection.php
SQL Inject-Me est Extension Firefox utilisé pour tester les vulnérabilités d'injection SQL.
https://addons.mozilla.org/fr/firefo...sql-inject-me/
bonne utilisation Red
Quel est l'équivalend en odbc pour sa :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $variable=mysql_real_escape_string(htmlspecialchars($_POST['nom']));
Bonjour,
quel SGBD est utilisé pour gérer le site ?
Comment on connait son SGBD ?
A ce que je vois dans la DOC les fonctions ODBC n'échappent rien d'autre que les apostrophes simple.
Tu peux cependant passer par l'interface PDO qui elle échappe correctement les données (PDO::quote() ou bien avec les requêtes préparées).
Moi je fais sa :
Sa me semble plus que suffisant non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 function register($pseudo, $password, $email) { $pseudo = addslashes(htmlspecialchars($pseudo, ENT_QUOTES)); $password = addslashes(htmlspecialchars($password, ENT_QUOTES)); $email = addslashes(htmlspecialchars($email, ENT_QUOTES));
Tu lances une requête du genre :
mysql :
pgsql :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part SHOW VARIABLES LIKE "%version%"
sqlserver :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part SELECT version();
tu exécutes ces bouts de codes et si ça marche tu fais un var_dump() sur le retour de la requête.
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
Absolument pas.
1- htmlspecialchars n'a aucun effet sur les injection sql , il est en général conseillé de l'appliqué à l'affichage et non à l'insertion.
2- addslashes n'echappe "que" ' " \ et NUL alors que les fonction spécifique au SGBD en on en général plus. Dans le cas ou il n'existe pas de fonction spécifique il est vivement conseillé d'utiliser les requêtes préparée en plus d'un filtrage/validation des données stricte.
Voici une discussion qui a déjà abordé cette problématique : ici
Bonne lecture
Exact, j'étais pas très bien réveillé.
Je rajouterai cependant ce n'est pas pour autant qu'il faut toujours utiliser des requêtes préparées. C'est utile uniquement dans les cas où on exécute la requête plusieurs fois avec plusieurs injections différentes de données. Dans les autres cas c'est utiliser une bombe nucléaire pour tuer une mouche.
Les SGBD on à peut près tous des caches des plan d'execution de leur requêtes. Donc concrètement tu prépares une fois une requête et la prochaine fois si elle est dans le cache la préparation sera récupérée du cache. Du coup pour des requêtes un peu complexes c'est même plus rapide qu'une query normale.
Donc tout bénéf.
Pour les requêtes simple le gain de tranquillité vaut bien les quelques ms perdues
sinon comme je disais je tourne sous ODBC et non mysql ou mysqli...
Donc quel est l'equivalent de sa en odbc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $variable=mysql_real_escape_string(htmlspecialchars($_POST['nom']));
Y'a pas en ODBC puisque ça permet de se connecter à différent SGBD. La seule solution, c'est les requêtes préparées + un filtrage /validation des entrées utilisateurs.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager