La sicurezza è fondamentale per applicazioni aziendali che gestiscono dati sensibili: informazioni clienti, transazioni, documenti riservati. PHP offre strumenti potenti per proteggere le applicazioni, ma serve seguirli correttamente. Ecco le best practice di sicurezza PHP per applicazioni aziendali.

1. Validazione e sanitizzazione input

Mai fidarsi dell'input utente. Tutti i dati provenienti da form, URL, cookie o header devono essere validati e sanitizzati prima dell'uso. PHP offre funzioni come filter_var(), htmlspecialchars() e mysqli_real_escape_string().

In Yii2, usa i validatori del framework: required, email, integer, string con lunghezza minima/massima. Yii2 sanitizza automaticamente l'output nelle view, ma devi validare l'input nei modelli.

2. Protezione da SQL Injection

Mai concatenare input utente direttamente nelle query SQL. Usa sempre prepared statements o query parametrizzate. In Yii2, Active Record usa prepared statements automaticamente, ma se scrivi SQL manuale, usa sempre parametri.

Esempio sbagliato: $sql = "SELECT * FROM users WHERE id = " . $_GET['id'];
Esempio corretto: $sql = "SELECT * FROM users WHERE id = :id"; con parametri bindati.

3. Protezione da XSS (Cross-Site Scripting)

XSS permette a malintenzionati di iniettare script JavaScript nelle tue pagine. Sanitizza sempre l'output prima di mostrarlo agli utenti. In Yii2, usa Html::encode() o HtmlPurifier per contenuti ricchi.

Yii2 protegge automaticamente da XSS se usi correttamente i suoi helper, ma devi essere consapevole quando permetti HTML non sanitizzato (ad esempio in editor WYSIWYG).

4. Protezione da CSRF (Cross-Site Request Forgery)

CSRF permette di eseguire azioni nel nome dell'utente senza il suo consenso. Yii2 include protezione CSRF integrata: genera token unici per ogni form e li valida automaticamente. Assicurati che sia abilitata in config/main.php.

5. Gestione sicura delle password

Mai memorizzare password in chiaro. Usa sempre hashing con algoritmi sicuri come bcrypt o Argon2. PHP offre password_hash() e password_verify(). In Yii2, usa Yii::$app->security->generatePasswordHash() e validatePassword().

6. Autenticazione e autorizzazione

Implementa autenticazione robusta: sessioni sicure, timeout automatici, protezione da brute force. Yii2 include sistema di autenticazione e RBAC (Role-Based Access Control) per gestire permessi complessi.

Per applicazioni aziendali, considera anche autenticazione a due fattori (2FA) per account amministrativi.

7. HTTPS e certificati SSL

Usa sempre HTTPS per applicazioni aziendali, soprattutto se gestiscono dati sensibili. HTTPS crittografa i dati in transito e protegge da man-in-the-middle attacks. Configura redirect automatico da HTTP a HTTPS.

8. Gestione sicura delle sessioni

Configura sessioni sicure: session.cookie_httponly = 1, session.cookie_secure = 1 (solo HTTPS), session.use_strict_mode = 1. In Yii2, configura questo in config/main.php.

9. Logging e monitoraggio

Registra tentativi di accesso falliti, errori di sicurezza, operazioni sensibili. Yii2 include sistema di logging potente. Monitora i log per identificare pattern sospetti o tentativi di attacco.

10. Aggiornamenti e dipendenze

Mantieni PHP e le dipendenze aggiornate. Le vulnerabilità vengono scoperte e patchate continuamente. Usa Composer per gestire le dipendenze e aggiornale regolarmente. Monitora avvisi di sicurezza per le librerie che usi.

11. Backup e disaster recovery

Implementa backup automatici regolari del database e dei file. Testa periodicamente il ripristino per assicurarti che funzioni. Per applicazioni critiche, considera backup incrementali e replicazione.

12. Configurazione server sicura

Configura il server web correttamente: nascondi versioni di PHP e server, disabilita funzioni pericolose se non necessarie, configura firewall e limiti di risorse. Usa php.ini con impostazioni di sicurezza appropriate.

Approfondimenti

Continua a leggere

Hai un progetto in mente?

Raccontami cosa ti serve: ti propongo la soluzione web più adatta alle tue esigenze.

Contattami I miei servizi