Echapement du ' en SQL.



  • Bonsoir, pour échapper un apostrophe en SQL il faut le doubler : comme ceci :

    Il faut qu''il... 
    

    J'amerai savoir s'il existe une fonction qui fasse l'échapement de la chaine ?

    D'avance, merci.



  • Heu… C'est quoi l'adresse de ton site que je pirate tout sa en vitesse a grand coup d'injection SQL ?

    Il n'y a qu'un et une seul méthode pour ce protéger et échapper correctement les ' et autre ".

    La fonction mysql_real_escape_string

    TOUJOURS UTILISER CETTE FONCTION !

    Phenix



  • Non non cette fonction ne fonctionne pas :?

    Je pense que je vais devoir coder la mienne alors.



  • Non non cette fonction ne fonctionne pas Confused

    Dans ce cas, je ne comprend pas ta question, que veux tu faire au juste ? Si tu n'utilise pas cette fonction ton site sera criblé de faille de sécuriter…


  • Administrateur

    Perso j'utilise pas cette fonction :D
    Par contre, j'utilise les " et non les ' pour protéger mes requêtes :)



  • Si. Etrangement, elle fonctionne.
    j'avais fais un test, un jour, et il s'était avéré que l'échappement des apostrophes par un slash était valide…mais seulement dans certains cas (mysql me balancait parfois des erreurs de syntaxe). Bizarre.

    Enfin bon...le problème sera réglé avec l'extension php PDO et son driver MySQL. Un simple $pdo->quote($texte); suffirait, quelle que soit la base de données utilisée.
    (ceci n'est pas une demande implorante pour l'installation du driver mysql en plus de ceux de sqlite et sqlite2, nonon :mrgreen: )



  • mysql_query("INSERT INTO news SET auteur='".$infos_user['pseudo']."', titre='".$_POST['titre']."', news='".escape_sql($_POST['texte'])."', time='".time()."'") or die(mysql_error());
    

    Ici j'ai appelé la fonction escape_sql, que dois-je utiliser ?



  • C'est-à-dire? Tu veux utiliser quoi pour faire quoi? Et qu'est-ce que c'est que cette fonction escape_sql qui n'existe pas (c'est mysql_real_escape_string qui est valide, comme l'a dit phenix)?



  • Ah bah en mettant cela dans la condig PHP ça va beaucoup mieux :)

    ; Magic quotes
    ;

    ; Magic quotes for incoming GET/POST/Cookie data.
    magic_quotes_gpc = Off

    ; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
    magic_quotes_runtime = Off

    ; Use Sybase-style magic quotes (escape ' with '' instead of ').
    magic_quotes_sybase = Off



  • C'est pas faux.

    Sauf que…

    Pas mal de sites sont mal codés, et se basent sur ces options. En clair, si on désactive ça, on va se retrouver avec 30% de failles en plus. J'exagère peut-être un peu, mais je ne dois pas être loin du compte.
    Par contre, pour désactiver ces options virtuellement, tu peux essayer le code présent dans le portail Sources de la wiki.



  • A vrai dire je développe mon script pour qu'il soit le plus portable possible, donc sans magic quote (on prépare déjà PHP6). C'est juste moi qui n'avait pas fait gaffe sur ce coup là et j'utilise déjà l'option avec les htaccess ;)



  • @megaland:

    A vrai dire je développe mon script pour qu'il soit le plus portable possible, donc sans magic quote (on prépare déjà PHP6).

    C'est biengue, ça :mrgreen:



  • biengue ? C'est quoi ce mot ? :lol:



  • C'est faux-nez-tique.

    hache-sueur-rance-touriste
    echo-gnomie

    pas taper!!!!!!!!!!!



  • Hum….

    tape Mouahahahah tu l'as mérité !



  • PHP lit 2 fois les chaines de caractères entre " . Ben oui, un fois pour interprêtrer les variables et une fois pour lire la chaine. Il perd donc un temps fou.

    Oui, mais quand c'est un site qui tourne sur un dualcore qui n'est qu'a 20 % de charge, tu peux te le permettre :)


Se connecter pour répondre
 

Il semble que votre connexion ait été perdue, veuillez patienter pendant que nous vous re-connectons.