Suggerimenti per sviluppare applicazioni protette in PHP

27 gennaio 2017

PHP è uno dei linguaggi di programmazione più popolari per il web. Aiuta gli sviluppatori a programmare le migliori applicazioni e a creare nuovi parametri di riferimento nello sviluppo mobile e web. Tuttavia, la preoccupazione più grande nello sviluppo di un'applicazione PHP è quella della sicurezza, rendendo lo sviluppo di applicazioni PHP sicure una sfida importante, soprattutto per i dilettanti. In questo articolo ti forniremo 3 suggerimenti importanti che ti aiuteranno a evitare alcune trappole comuni nella sicurezza e nello sviluppo di PHP.

Suggerimento 1: è necessario un'adeguata segnalazione degli errori

La segnalazione degli errori dell'applicazione è molto utile durante il processo di sviluppo. I rapporti sugli errori non solo ti aiutano a trovare errori di ortografia nelle variabili, ma anche a individuare qualsiasi utilizzo errato delle funzioni.

Tuttavia, una volta che il sito web è attivo, gli stessi rapporti che ti hanno aiutato durante lo sviluppo possono ritorcersi contro la sicurezza della tua applicazione dicendo agli utenti molto di più sul tuo sito web di quanto vorresti che sapessero (ad esempio le informazioni relative al software in esecuzione, la struttura delle cartelle, ecc.). Prima che il sito Web venga pubblicato, è necessario assicurarsi di eliminare tutti questi errori per mantenere nascoste tali informazioni sensibili. Questo può essere fatto scrivendo le seguenti righe sulle nostre applicazioni.

segnalazione_errore(0);

Per eventuali errori ancora presenti, sentiamo comunque il bisogno di rimanere aggiornati al riguardo. Quindi, dobbiamo assicurarci che tutti i nostri errori vengano registrati in un file protetto, cosa che può essere eseguita utilizzando una funzione PHP chiamata set_error_handler.

Suggerimento 2: è consigliabile disabilitare le funzionalità di PHP non più in uso

Fin dagli albori di PHP, i progettisti di PHP hanno regolarmente incluso alcune funzionalità intese a semplificare lo sviluppo. O almeno hanno pensato di renderlo tale! Alcune di queste funzionalità apparentemente utili potrebbero anche rivelarsi avere conseguenze indesiderabili. Le chiamiamo "caratteristiche negative" perché consentono la convalida dei dati e creano un percorso affinché i bug possano trovare la loro strada negli script. Questo è il motivo per cui ti suggeriamo di disabilitare alcune di queste funzionalità come una delle prime cose da fare al momento di iniziare il processo di sviluppo.

Nota: queste funzionalità potrebbero essere disattivate o meno per il tuo sito web in base al tuo host. Se stai sviluppando sul tuo computer o su un altro ambiente locale simile, probabilmente questi non verranno disattivati. Alcune di queste funzionalità sono state eliminate in PHP6, ma sono ancora presenti nelle applicazioni PHP4 e alla fine saranno deprecate dalle applicazioni PHP5 in poi.

Registra valori globali (register_globals)

'register_globals' era fondamentalmente pensato per aiutare lo sviluppo rapido di applicazioni che coinvolgevano una stringa di query. IL 'register_globals' ci consente di accedere al valore con $var invece di $_GET['var'] automaticamente. Questo potrebbe sembrarci utile, ma sfortunatamente tutte le variabili nel codice ora includono questa proprietà, quindi ora è facile entrare in applicazioni PHP che non proteggono da tali conseguenze indesiderate. Lo snippet di codice seguente è solo un esempio comune che vedremo negli script PHP:

if( !empty( $_POST['nome utente'] ) && $_POST['nome utente'] == 'test' && !empty( $_POST['password'] ) && $_POST['password'] == “test123” )
{
$accesso = vero;
}

Se l'applicazione è in esecuzione con Register_globals ON, un utente potrebbe semplicemente inserire access=1 in una stringa di query e avere quindi accesso a qualunque cosa lo script sia in esecuzione. Anche se non è possibile disabilitare Register_globals dal lato dello script (usando ini_set, come nel caso normale), ma a questo scopo è possibile utilizzare un file .htaccess. Oltre a questo, alcuni host ci consentono di avere anche un file php.ini sul server per fare questo.

Disabilitare con .htaccess

php_flag registro_globali 0

Disabilitare con php.ini

Register_globals = Disattivato

Va notato che se intendiamo utilizzare un file php.ini personalizzato che non è applicabile all'intero server, dobbiamo assicurarci di includere queste dichiarazioni in ogni sottocartella che contiene PHP.

Suggerimento 3: tieni d'occhio gli attacchi Cross Site Scripting (XSS) nell'input dell'utente

Un'applicazione Web generalmente accetta input dagli utenti per visualizzare eventualmente lo stesso in una forma o nell'altra che può essere una qualsiasi dell'ampia varietà, inclusi commenti, post di blog o thread che sono tutti fondamentalmente sotto forma di codice HTML. Tuttavia, è interessante notare che può essere rischioso per la tua applicazione consentire l'HTML al momento di accettare input, poiché ciò lascia ampio spazio affinché JavaScript venga eseguito in uno dei tanti modi inaspettati. E questo permette anche che i cookie vengano facilmente dirottati se anche qualcosa di veramente piccolo rimane incustodito. I dirottatori possono quindi facilmente utilizzare i dati di questi cookie per falsificare un account reale e ottenere un accesso illegale ai dati del tuo sito web. Puoi proteggere il tuo sito web da tali attacchi disabilitando del tutto l'HTML e, alla fine, disabilitando anche l'esecuzione di JavaScript. Questa, tuttavia, potrebbe non essere sempre un'opzione fattibile poiché disabilita del tutto anche la formattazione, di cui potrebbe non essere possibile fare a meno, soprattutto nel caso di un blog o di un forum.

Per risolvere questo problema, puoi disabilitare gran parte del codice HTML, ad eccezione di alcune semplici formattazioni consentite. Ciò può essere ottenuto consentendo solo alcuni tag HTML selezionati (senza attributi), ad esempio il tag "strong" o il tag "em". Oppure semplicemente alcuni tag popolari come "BBCode" o "BB Tags" che vengono comunemente scritti sui forum nel formato [b]test[/b]. Il BBCode può anche essere implementato utilizzando pacchetti preesistenti come HTML_BBCodeParser o scrivendo la nostra implementazione del BBCode con espressioni regolari e una serie di istruzioni 'preg_replace'.

Riferimento: http://www.sks.com.np/basic-security-vulnerabilities-in-php-code/

Come leader Società di sviluppo PHP , Carmatec offerte dall'inizio alla fine Sviluppo PHP soluzioni basate su tecnologie all'avanguardia, sia front-end che back-end. Oltre allo stile e al design contemporanei, lavoriamo per mantenere le interfacce semplici e facili da usare. La facilità d'uso è il nostro obiettivo anche nelle funzionalità complesse del sito web.

it_ITItalian