osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> faille de securite - injection SQL
amonite
posté 6 Apr 2012, 10:21
Message #1


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 52
Inscrit : 29-April 09
Lieu : audun le tiche
Membre no 25205



Bonjour,

le logiciel d'analyse nommé dans un précedent POST, ma dis que j'avais des failles de sécurité - Injection SQL -, est ce que quelqu'un saurait me dire comment y remédier.

Merci d'avance.

Bonne journée

Code
   • Alimentation :
     </td>
        <td width="40%">  <select name="listbox_alim" style="width:600px;">
              <option name="alim" value="alim" >Aucun(e)</option>
              
                    <?php
                      
        
     $req = "select distinct * from products p, products_description pd, products_to_categories p2c, categories_description cd where p.products_status = '1' and p.products_id = pd.products_id and p.products_id = p2c.products_id and p2c.categories_id = cd.categories_id and cd.categories_id LIKE '1658' order by p.products_price ASC ";
                      $sql = mysql_query($req);
                          while ($data = mysql_fetch_assoc($sql))
                            {
                                $nom_alim = $data['products_name'];
        $prix_alim = round($data['products_price'] * 1.196, 2);
                                $id_alim = $data['products_id'];
        
                                echo "<option value=$id_alim> ".($nom_alim)." - ".($prix_alim)." €</option>";
        
       }                    
                      ?>                        
               </select>
           </td>
           </tr>  
          
            <tr>
        <td width="60%" style="font-size:12px">


--------------------
Marche avec les meilleurs, ou crève avec les autres

Oscommerce 2.2MS2FR - invoice pdf 1.5 - tva intracom 5.1.1 - country states selector ajax 1.5.5 - customer discount 1.3 - customer extra fields 1.2a - directbuy 1.21 - member approval 1.7 - order_editor_5_0_9b_FR
Go to the top of the page
 
Gnidhal
posté 6 Apr 2012, 11:01
Message #2


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 9221
Inscrit : 4-March 03
Lieu : Pau
Membre no 927



Les failles de sécurité injection sql se font généralement via le paramètre $_GET.
Il convient donc de gérer la variable GET en filtrant tout ce qui n'est pas attendu et en formatant les valeurs attendues.
Un exemple si tu passes products_id en get, tu peux simplement dégager tout ce qui n'est pas attendu par un filtre du genre :
$products_id = (int)$_GET['products_id'];
et en ne passant à ta requête que la valeur traduite :
WHERE products_id = '$products_id'
la valeur de products_id ne pouvant être qu'un entier, cela élimine de fait les chaines qui pourraient s'injecter dans la requête via products_id.
d'autres possibilités de protection existent via les fonctions existantes dans la 2.3.1 :
Code
  function tep_output_string($string, $translate = false, $protected = false) {
    if ($protected == true) {
      return htmlspecialchars($string);
    } else {
      if ($translate == false) {
        return tep_parse_input_field_data($string, array('"' => '&quot;'));
      } else {
        return tep_parse_input_field_data($string, $translate);
      }
    }
  }

  function tep_output_string_protected($string) {
    return tep_output_string($string, false, true);
  }

  function tep_sanitize_string($string) {
    $patterns = array ('/ +/','/[<>]/');
    $replace = array (' ', '_');
    return preg_replace($patterns, $replace, trim($string));
  }

qui permettent de protéger les paramètres entrants.
A toi de voir comment procéder selon tes scripts.


--------------------
Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues :
Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums.
Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin.

----------------------------- Quelques sites de référence ---------------------------
PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js
Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper
Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien)
Go to the top of the page
 
FoxP2
posté 6 Apr 2012, 19:39
Message #3


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1665
Inscrit : 3-June 09
Membre no 25501



Le code cité ne fait pas partie du code de base osCommerce.
C'est une adaptation personnalisée.
La sécurité du script n'est pas en cause.
Par conséquent, le sujet est déplacé en section fonctionnement
Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 29th March 2024 - 03:15
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)