IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Quelles sont les requêtes SQL que l'on peut pirater ?


Sujet :

PHP & Base de données

  1. #21
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    heu... regle n°4 de ma signature peut etre ;o)

    postgreSQL a également des fonctions qui vont bien, quand a MSSQL, y a pas de fonctions prédéfinies, mais on en trouve dans les commentaires utilisateurs du manuel.

  2. #22
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Oui, c'est le "htmlentities" qui manque.

    Il est à mettre sur tous les value des champ input en "text" ?

  3. #23
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 065
    Points
    6 065
    Par défaut
    Citation Envoyé par Fladnag
    heu... regle n°4 de ma signature peut etre ;o)

    postgreSQL a également des fonctions qui vont bien, quand a MSSQL, y a pas de fonctions prédéfinies, mais on en trouve dans les commentaires utilisateurs du manuel.
    Pour Mssql il y a rien mise à par remplacer les simple quote en double. Une faille que j'ai constaté c'est le double tiret qui lui est sensible
    SELECT * from xxx WHERE yyy='ffdfd--' = plantage c'est un exemple le problème c'est que j'en suis sur qu'il y a en a d'autre.

  4. #24
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    "mysql_real_escape_string" si j'ai bien compris permet de garder intact le contenu du champ et donc mysql ne l'interprête pas.

    Si c'est le cas es-ce que cela remplace une fonction de ce gence (en partie bien sûr) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function endCodeField($field)
    {
        $field = trim($field);
    	$field = strip_tags($field);
    	// convertit le premier caractère d'une chaîne en majuscule
    	$field = ucfirst($field);
    	$field = str_replace('"','"',$field);
    	$field = stripslashes($field);			
    	$field = addslashes($field);
    	$field = utf8_decode($field);
       return $field;
    }

  5. #25
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 065
    Points
    6 065
    Par défaut
    Citation Envoyé par lodan
    "mysql_real_escape_string" si j'ai bien compris permet de garder intact le contenu du champ et donc mysql ne l'interprête pas.

    Si c'est le cas es-ce que cela remplace une fonction de ce gence (en partie bien sûr) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function endCodeField($field)
    {
        $field = trim($field);
    	$field = strip_tags($field);
    	// convertit le premier caractère d'une chaîne en majuscule
    	$field = ucfirst($field);
    	$field = str_replace('"','"',$field);
    	$field = stripslashes($field);			
    	$field = addslashes($field);
    	$field = utf8_decode($field);
       return $field;
    }
    Non il y a des choses qui sont en double ou ne serve a rien.
    $field = str_replace('"','"',$field);
    avec ça
    $field = addslashes($field);
    A premiere vu.
    une simple quote doit être remplacé par une double quote.

  6. #26
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Citation Envoyé par berceker united
    SELECT * from xxx WHERE yyy='ffdfd--' = plantage c'est un exemple le problème c'est que j'en suis sur qu'il y a en a d'autre.
    ca m'etonne ce que tu dis parce que ca voudrais dire que mssql ne peux JAMAIS avoir -- dans un champ de type VARCHAR (ou equivalent krosoft) ce qui me parait tres douteux...

    par contre, je veux bien que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $valeur = "valeur--";
    $sql="SELECT * FROM table WHERE champ=$valeur";
    plante, mais ce n'est pas pareil parce qu'il n'y a pas d'apostrophe autour de la valeur... et ce type de syntaxe doit etre reservé aux champs (et aux valeurs) qui sont purement numerique (a filtrer avant donc)

  7. #27
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 065
    Points
    6 065
    Par défaut
    Citation Envoyé par Fladnag
    ca m'etonne ce que tu dis parce que ca voudrais dire que mssql ne peux JAMAIS avoir -- dans un champ de type VARCHAR (ou equivalent krosoft) ce qui me parait tres douteux...

    par contre, je veux bien que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $valeur = "valeur--";
    $sql="SELECT * FROM table WHERE champ=$valeur";
    plante, mais ce n'est pas pareil parce qu'il n'y a pas d'apostrophe autour de la valeur... et ce type de syntaxe doit etre reservé aux champs (et aux valeurs) qui sont purement numerique (a filtrer avant donc)
    Je t'assure sur les croquettes de mon chat, j'ai fais un test, j'ai remarqué le même problème en version asp.

    Version php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Function SearchFichier($Mot){
    	$i    = 0;
    	$data = array();
    	$rs   = mssql_query("SELECT b.nom,b.idfichier,a.code,a.idline_code,a.line FROM tb_line_code AS a , tb_fichier_code AS b WHERE a.code LIKE '%".$Mot."%' AND b.idfichier=a.idfichier  ORDER BY b.nom, a.line");
    	while($data = mssql_fetch_array($rs)){
    		$arrOut[$i] = $data;
    		$i++;
    	}
    	return $arrOut;
    }
    C'est un petit moteur de recherche bateau (pour une utilisation personnel). Lorsque dans le champs de formulaire je tape simplement :
    word --
    Requête refusé.

  8. #28
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par JackBeauregard

    Pour sécuriser correctement une requête, on fait :

    ou

    Avec bien sûr dans les deux cas auparavant mysql_real_escape_string() .

    Normalement c'est la première solution.
    Non ce sont deux cas différents... dans le premier id est une chaine de charactère car il est entre quotes dans ce cas tu fais


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE id='".mysql_real_escape_string($id)."'
    Dans le second cas id est un int donc...


    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE id='.intval($id).'
    @ tchaOo°

  9. #29
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Citation Envoyé par berceker united
    Je t'assure sur les croquettes de mon chat, j'ai fais un test, j'ai remarqué le même problème en version asp.

    C'est un petit moteur de recherche bateau (pour une utilisation personnel). Lorsque dans le champs de formulaire je tape simplement :
    word --
    Requête refusé.
    Ben je te crois alors... j'ai pas de serveur krosoft a attaquer pour verifier... mais si c'est le cas c'est VRAIMENT la base la plus pourrie de la terre... mais c'est pas possible, ca doit etre une option a activer quelque part ;o)

  10. #30
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 065
    Points
    6 065
    Par défaut
    Citation Envoyé par Fladnag
    Ben je te crois alors... j'ai pas de serveur krosoft a attaquer pour verifier... mais si c'est le cas c'est VRAIMENT la base la plus pourrie de la terre... mais c'est pas possible, ca doit etre une option a activer quelque part ;o)
    Oui peut être mais elle aurait dù être activé par défaut. pour info c'est SQLServer 2000 peut être que sur la version 2005 c'est arrangé.

Discussions similaires

  1. Quelles sont les bibliothèques Qt que vous utilisez ?
    Par johnlamericain dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 26/07/2010, 12h23
  2. Réponses: 2
    Dernier message: 24/08/2006, 11h02
  3. Savoir quelle sont les requêtes les plus utilisées ?
    Par tchoumak dans le forum Requêtes
    Réponses: 1
    Dernier message: 29/06/2006, 16h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo