Sicurezza
Questa pagina descrive alcune "best practices" sulla sicurezza all'interno di applicazoni web, ed in dettaglio come si comporta CodeIgniter.
Sicurezza dell'URI
CodeIgniter è abbastanza restrittivo sui caratteri ammessi in una stringa URI per ridurre il più possibile la possibilità che dati malevoli vengano passate alle nostre applicazioni. Gli URIs possono contenere solo i seguenti caratteri:
- Testo Alpha-numerico
- Tilde: ~
- Punto: .
- Due Punti: :
- Underscore: _
- Dash: -
Informazioni GET, POST e COOKIE
I dati GET sono semplicemente rifiutati da CodeIgniter in quanto utilizza il sistema dei segmenti URI invece del tradizionale stringhe URL query (a meno che non si sia abilitata l'opzione delle stringhe query nel proprio file di configurazione). L'array GET globale è sconfigurate dalla classe di Input durante l'inizializzazione del sistema.
Register_globals
Durante l'inizializzazione del systema tutte le variabili globali sono sconfigurate eccetto quelle trovate negli array $_POST e $_COOKIES. La rutine di sconfigurazione produce gli stessi effetti di register_globals = off.
magic_quotes_runtime
La funzionalità magic_quotes_runtime è disattivata durante l'inizializzazione del systema, questo non rende necessaria la rimoszione degli slashes quando si recuperano i dati dal proprio database.
Best Practices
Prima di accettare qualunque dato all'interno della propria applicazione, siano essi passati attraverso un form via POST, dati COOKIE, dati URI, dait XML-RPC o informazioni provenienti da un server array, sei incoraggiato a seguire il seguente approccio:
- Filtrare i dati come se fossero contaminati.
- Validare le informazioni accertandosi del corretto tipo, lunghezza, dimensione, etc.(talvolta questo passaggio sostituisce il punto precedente).
- Escape i dati prima di salvarli nel proprio database.
Per supportarci in questo processo CodeIgniter predispone le seguenti funzioni:
-
XSS Filtering
CodeIgniter accede grazie ad un filtro Cross Site Scripting. Questo filtro viene utilizzato per controllare codice Javascript malevolo all'interno dei propri dati, o altri tipi di codice che potrebbero attaccare i cookies o altre azioni malevoli. Il filtro XSS è descritto nell'apposita sezione.
-
Validare i dati
CodeIgniter permette di essere assistiti nel validare, filtrare e preparare i propri dati grazie alla Classe di Validazione dei Form.
-
Escape tutte le informazioni prima di inserirle nel Databaseall data before database insertion
Non si deve inserire mai nessun tipo di dato nel proprio database senza aver effettuato un loro escaping. Si rimanda alla sezione dove vengono discusse le queries per maggiori informazioni.
Nota: Per maggiori dettagli sulla sicurezza rimando al seguente articolo. (Davide)
Ultimo aggiornamento ( Giovedì 18 Novembre 2010 09:14 )