Controllo input utente [server-side]

Prevenzione di SQL Injection:

  • fare l’escape dei caratteri nelle stringhe che compongono le query.

    Addslashes: esegue il quoting della stringa anteponendo agli apici singoli(‘),doppi(“),ai backslash(\) e a NUL il carattere backslash (\).
    Se la direttiva PHP magic_quotes_gpc è impostata a on allora non è necessario utilizzare addslashes() in quanto è eseguito l’escape su tuti i dati GET, POST, e COOKIE.Alternativamente è possibile utilizzare le funzioni apposite per il database sul quale ci si sta appoggiando, nel caso di mysql è mysql_escape_string().
  • sia addslashes() che mysql_escape_string() non eseguono l’escape dei caratteri % e _. Tali caratteri possono essere utilizzati all’interno della clausola LIKE di SQL; è quindi oppurtuno eseguire con strtr l’escape.

    es. Campo causale: a%
    $causale = strtr($_POST[causale], array(‘_’ => ‘\_’, ‘%’ => ‘\%’));
    Variabile dopo la sostituzione: a\%
    La query contenente $causale verrà quindi eseguita correttamente senza alcun rischio ma va ricordato che se si tratta di una query di insert o di update nel database troveremo i vari backslashes e sarà quindi necessario utilizzare stripslahes() nel caso si desiderino visualizzare i dati.

    Altre funzioni utili alla eliminazione o sostituzione di caratteri potenzialmente pericolosi sono str_replace(), preg_replace() o ereg_replace().

Altri accorgimenti:

  • eliminazione di tag html e php indesiderati
    es.strip_tags($_POST[causale]);
    E’ possibile indicare quali tag non eliminare, specificandoli come secondo argomento.
    strip_tags($_POST[causale], ‘&ltbr />’);
    Nota: tag non correttamente chiusi o corrotti influenzano tutta la parte della stringa interessata.
    1. $_POST[causale]=”Rigoni<b spa di Lecco” utilizzando strip_tags diventa “Rigoni”
    2. $_POST[causale]=”Rigoni<b> spa di Lecco” diventa “Rigoni spa di Lecco” e anche ciò che segue sarà in grassetto.

Pagine: 1 2

ilpestifero

Inserisci un commento