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 :

problème d'injection SQL [Oracle]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Par défaut problème d'injection SQL
    Bonjour, je n'arrive pas à gérer l'injection SQL.
    Je cherche même pas à protéger ma requête, mais plutôt à réussir à faire passer des requêtes où il y a une condition d'égalité avec une valeure contenant une apostrophe.

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM personne WHERE nom='D'Henry'

    j'ai déjà essayé avec addslash et j'obtiens une erreur ( 'D'Henry'-> 'D\'Henry l'échappement ne marche pas)

    Savez vous comment je peux échapper des caractères dans ce type de situation ?

    J'utilise Oracle 10g


    merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Par défaut
    C'est bon en fait j'ai trouvé, il suffit tout simplement de doubler le simple quote. Pour une requete avec une égalitée sur une variable, il suffit de remplacer $maVariable par str_replace("'","''",$maVariable) qui va doubler tout les simple quote de votre variable, c'est-à-dire les échapper pour ce cas (Oracle)
    voilà

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 49
    Par défaut
    Citation Envoyé par matoon Voir le message
    C'est bon en fait j'ai trouvé, il suffit tout simplement de doubler le simple quote. Pour une requete avec une égalitée sur une variable, il suffit de remplacer $maVariable par str_replace("'","''",$maVariable) qui va doubler tout les simple quote de votre variable, c'est-à-dire les échapper pour ce cas (Oracle)
    voilà
    Salut je te conseil plutôt d'utiliser le oci_bind_by_name : http://fr.php.net/manual/fr/function...nd-by-name.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //(code fait de tête à vérifier)
    $maVariable = "D'henry";
    $db_cnx = ...
     
    $requete = 'SELECT * FROM personne WHERE nom = :nom';
    $statement = oci_parse($TA_CNX, $requete);
    oci_bind_by_name($statement, ":nom", $maVariable);
     
    oci_execute ..

    Cela fonctionne aussi avec toutes les requetes CRUD (Create Retrieve Update Delete)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Injection SQL en VB.net (')
    Par seksaki dans le forum VB.NET
    Réponses: 5
    Dernier message: 19/02/2010, 22h58
  2. [Interbase] Problème de syntaxe SQL
    Par navis84 dans le forum InterBase
    Réponses: 4
    Dernier message: 22/12/2004, 17h07
  3. Problème de requète SQL dans un Requery
    Par Keraccess dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 22/10/2004, 14h58
  4. Problème Access to Sql Server
    Par vuldos dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/08/2004, 15h56
  5. Réponses: 3
    Dernier message: 18/11/2002, 16h36

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