Come filtrare le variabili di ingresso con PHP

Come filtrare le variabili di ingresso con PHP

L’utilizzo di PHP prevede svariate funzioni di basso livello che, in molti casi, è bene trovarsi pronti a trattare con le dovute cautele per evitare rischi di attacco da parte di utenti maliziosi che manipolino l’output.

(c) leremy – Fotolia.com

La situazione tipica di questi casi riguarda una sottovalutazione globale del problema, salvo poi doversi ricredere quando il nostro sito è compromesso (spesso definitivamente); non ci sono dubbi, in effetti, che il rischio della manipolazione delle variabili di ingresso (form di ingresso e, naturalmente, variabili che passiamo mediante concatenazione direttamente nell’URL) inserite direttamente dagli utenti (a volte addirittura anonimi) sia un fattore da non prendere sottogamba per nessuna ragione. Per questo motivo è necessario filtrare le variabili di ingresso, e questo significa concentrare la propria attenzione su quello che potenzialmente potrebbe arrivare al nostro codice mediante $_POST e $_GET.

Per filtrare una variabile di ingresso si utilizza normalmente addslashes, e filtrare le due variabili in questione (e tutte le loro occorrenze nel codice del sito, ovviamente) significa fare qualcosa di questo tipo:

  • $_GET[‘qualcosa’] = addslashes( $_GET[‘qualcosa’] );
  • Per la cronaca, comunque, la funzione “magic quotes” serve esattamente ad assolvere questo tipo di funzionalità, imponendo l’utilizzo automatico di addslashes su tutti i GET/POST e, in aggiunta, su quello che viene usualmente salvato nei cookie. Per attivarlo, in condizioni di amministratore del sistema con il massimo dei privilegi, sarà necessario aggiungere:
    php_flag magic_quotes_gpc on

    nel file .htaccess, oppure possiamo operare sul PHP.ini (quando consentito):
    magic_quotes_gpc = on

    In caso di difficoltà è necessario contattare l’hosting che state utilizzando perchè risolvano il problema loro (e non è detto, in generale, che lo facciano, specie sulle soluzioni ultra-low cost ed in overselling). Ci sono altre regole generali di sicurezza da seguire, come ad esempio disattivare la notifica esplicita degli errori in PHP, relegando il tutto ad un log di sistema che possiamo leggere soltanto noi e privando potenziali attaccanti, in questo modo, di informazioni che potrebbero contribuire ad una code injection o SQL injection.

    Valutazioni utenti

    4.25 / 5 ( 85% )

    4 voti