Quando si creano delle applicazioni in PHP non è importante soltanto creare script che funzionino correttamente, bisogna inoltre fare sempre attenzione alla sicurezza; la rete è infatti ricca di insidie e sono tante le possibilità di vedere il nostro lavoro rovinato da qualche malintenzionato.
Per cominciare, diremo subito che ci sono due modi di affrontare il discorso inerente la sicurezza in PHP, uno riguarda la configurazione e quindi il file PHP.INI, l'altro riguarda la digitazione del listato. In questa breve serie di articoli analizzeremo entrambe le metodologie.
Prima di affrontare il discorso sicurezza dal punto di vista più prettamente tecnico, possiamo suggerire subito al lettore alcune semplici regole comportamentali che, se osservate con attenzione, aiuteranno lo sviluppatore nella creazione di applicazioni più sicure:
- Non utilizzare il metodo Get per il trasferimento di dati quando è possibile sostituirlo con il metodo Post; come noto, infatti, il primo metodo trasporta le informazioni in querystring, quindi 'in chiaro', permettendo la loro visualizzazione a chiunque. Il discorso diventa ancora più importante quando si manipolano dati sensibili come UserID e password.
- Aggiornare frequentemente il nostro sistema, consulatare spesso il sito ufficiale di PHP ponendo particolare attenzione alle info riguardanti la scoperta di nuovi bugs e alle possibili modifiche al file di configurazione che possano rendersi necessarie.
Fare inoltre attenzione alle funzioni che vengono considerate 'deprecate' per le nuove distribuzioni di PHP.
- Limitare il più possibile le occasioni di intervento sul sistema da parte degli utenti, vanno bene la gestione personalizzata dei template e la possibilità di inserire commenti agli articoli etc., ma il tutto deve essere consentito senza che l'utente abbia la stessa possibilità di accesso ai dati dell'admin.
- Monitorare costantemente gli accessi facendo particolare attenzione alla loro provenienza e considerando come "osservati speciali" coloro che accedono troppo spesso alle nostre applicazioni; consideriamo che non tutti i visitatori sono "umani" (ad esempio, gli spambot per i form to mail).
- (MySQL) Far accedere gli script alle basi di dati tramite utenti che non possiedano tutti i privilegi; perchè l'utente definito nel file di configurazione di un guestbook dovrebbe poter agire tramite GRANT o DROP? Lasciamo al root questi privilegi e non utilizziamolo per le connessioni tramite applicazione ma solo per l'amministrazione del DBMS.
- Utilizzare controlli lato server, inutile fare affidamento su quelli lato client, se pur ottimi dal punto di vista funzionale questi ultimi possono essere facilmente aggirati o disabilitati.
Detto questo, passeremo alla descrizione di alcuni accorgimenti per la configurazione che dovranno essere presi in seria considerazione per la sicurezza delle nostre applicazioni e dei dati da esse gestiti.
Attenzione: questo articolo è stato concesso in esclusiva per la pubblicazione a
Mrwebmaster.it; ne è vietata la riproduzione,
anche parziale, senza l'esplicito consenso dell'autore e della redazione di
Mrwebmaster.it.