Query più sicure e debug

Come eseguire query più sicure e più facili da controllare in fase di debug


Ho notato che diversi siti in caso di errore delle query Mysql fanno l’output della query e lasciano proseguire il programma, questo a volte pregiudica la sicurezza di molti sistemi come per esempio a volte la copertura con password di una pagina.

E’ anche vero che in fase di debug è molto utile avere la query sott’occhio in caso di errore, quindi come comportarsi?

La soluzione che propongo in questo tutorial è quella di usare una funzione propria anzichè mysql_query(), esempio:
<?php
//Impostazioni
$debug=true;
//Funzioni...
//Safe Query
function safe_query($sql) {
  global $debug;
  $qh=@mysql_query($sql);
  if ($qh)
    return $qh;
  else {
    if ($debug)
      die('La query ' . $sql . ' ha restituito l'errore ' . mysql_error());
    else
      die('Spiacenti, errore interno');
  }
}
?>
In questa porzione di codice presuppongo che nelle impostazioni del vostro script ci sia una variabile chiamata $debug che sia impostata a true se siete in fase di debug (e quindi volete visualizzare a video gli errori) oppure a false se qualunque utente può visualizzarlo (quindi preferite mantenere nascosta la query).

In entrambi i casi ho usato un die() ma ognuno potrà usare il proprio sistema per il log deglio errori o magari può inviarsi un’email tramite la funzione mail() di php per essere sempre a conoscenza degli errori che gli utenti riscontrano sul sito.

Questo vuol essere solo uno spunto per una più ampia personalizzazione, proponetemi le vostre idee!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *