8791 sujets

Développement web côté serveur, CMS

Bonjour,

En cherchant une fonction me permettant de sécuriser les données a inserer dans ma bdd je suis tombé sur cette fonction et n'etant pas un pro du php je m'en refere a vous pour savoir si elle suffit ?

function sql_insert($value,$allow_wildcards = true, $detect_numeric = true) {
  // Taken from the PHP site and modified for wildcards and automatic formatting for numbers/strings.
  $return_value = $value;

  // Reverse magic_quotes_gpc/magic_quotes_sybase effects on those vars if ON.
  if (get_magic_quotes_gpc()) {
    if(ini_get('magic_quotes_sybase')) {
      $return_value = str_replace("''", "'", $return_value);      
    } else {
      $return_value = stripslashes($return_value);
    }
  }
  
  //Escape wildcards for SQL injection protection on LIKE, GRANT, and REVOKE commands.
  if (!$allow_wildcards) {
    $return_value = str_replace('%','\%',$return_value);
    $return_value = str_replace('_','\_',$return_value);
  }
  
  // Quote if $value is a string and detection enabled.
  if ($detect_numeric) {
    if (!is_numeric($return_value)) {
      return "'" . mysql_real_escape_string($return_value) . "'";
    }
  }
  
  return mysql_real_escape_string($return_value);
}


Qu'en pensez vous ?
Modérateur
Salut wachalala,

Je ne suis pas un pro de la sécurité PHP et pas un grand pro en php. Je n'ai pas testé ce code mais j'ai l'impression qu'il est pas mal fait. Il utilise la plupart des fonctions contre les injections ou autres problèmes inhérent au hacking.

Lorsque tu codes en php je peux te conseiller également de filtrer le plus souvent possible tes superglobales ($_POST, $_GET, etc.) Ne jamais faire confiance à ce que pourrais écrire l'utilisateur. Tu peux les filtrer de la manière suivante par exemple : soit par htmlentities() ou soit par htmlspecialchar().

Après, cela dépend de l'application que tu veux faire sur le net. Il y a quelques subtilités annexes pour protéger au mieux ton application notamment lors de l'envoi d'un fichier sur un serveur.

++
Modifié par Nolem (16 Oct 2008 - 21:36)