PHP
HTML
CSS
JavaScript
Generatori
Varie & Old

PHP: Sicurezza base

Sicurezza base in PHP

La sicurezza è una parte essenziale nello sviluppo in PHP. Analizziamo le minacce comuni e le buone pratiche per proteggere applicazioni e dati degli utenti.

Introduzione alla sicurezza

Molte vulnerabilità derivano da input non controllato o da cattiva gestione dei dati. È necessario applicare regole precise per ridurre i rischi come SQL injection, cross-site scripting (XSS) e furto di sessione.


Validazione e sanitizzazione input

Ogni dato proveniente da form, URL o cookie va validato e ripulito prima dell’utilizzo. PHP offre funzioni come filter_input() e filter_var().

Codice Esempio: validazione input

CODE: PHPpreleva codice
  1. <?php
  2. $email = "[email protected]";
  3.  
  4. if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
  5.   echo "Email valida.";
  6. } else {
  7.   echo "Email non valida.";
  8. }
  9. ?>
  10. <!-- Output nel browser:
  11. Email valida.
  12. -->

Prevenzione SQL Injection

Mai inserire direttamente input utente nelle query SQL. Bisogna usare i prepared statements con mysqli o PDO.

Codice Esempio: query sicura con mysqli

CODE: PHPpreleva codice
  1. <?php
  2. $conn = new mysqli("localhost", "root", "", "scuola");
  3.  
  4. $stmt = $conn->prepare("SELECT * FROM utenti WHERE username = ?");
  5. $stmt->bind_param("s", $username);
  6.  
  7. $username = "mario";
  8. $stmt->execute();
  9.  
  10. $result = $stmt->get_result();
  11. while ($row = $result->fetch_assoc()) {
  12.   echo $row["username"] . "<br>";
  13. }
  14. ?>
  15. <!-- Output nel browser:
  16. mario
  17. -->

Prevenzione XSS (Cross-Site Scripting)

Per evitare l’iniezione di codice JavaScript malevolo, bisogna convertire i caratteri speciali in entità HTML usando htmlspecialchars().

Codice Esempio: prevenzione XSS

CODE: PHPpreleva codice
  1. <?php
  2. $input = "<script>alert('XSS');</script>";
  3.  
  4. echo htmlspecialchars($input);
  5. ?>
  6. <!-- Output nel browser:
  7. &lt;script&gt;alert('XSS');&lt;/script&gt;
  8. -->

Sicurezza delle sessioni

Le sessioni devono essere protette contro furti di identificatore. È utile rigenerare spesso l’ID di sessione con session_regenerate_id().

Codice Esempio: rigenerazione ID sessione

CODE: PHPpreleva codice
  1. <?php
  2. session_start();
  3. session_regenerate_id(true);
  4.  
  5. echo "Nuovo ID sessione: " . session_id();
  6. ?>
  7. <!-- Output nel browser:
  8. Nuovo ID sessione: asd87as6d87asd6a...
  9. -->

Tabella riassuntiva sicurezza base

Minaccia Protezione Funzioni utili
Input non validoValidazione e sanitizzazionefilter_var(), filter_input()
SQL InjectionPrepared statementsmysqli, PDO
XSSEscape outputhtmlspecialchars()
Hijacking sessioniRigenerazione IDsession_regenerate_id()

Considerazioni

La sicurezza di un’applicazione PHP dipende soprattutto dal controllo degli input e dalla gestione corretta delle sessioni. È fondamentale adottare sempre query sicure, validazione e escaping dell’output. Le tecniche illustrate rappresentano solo le basi: un’applicazione robusta deve integrare ulteriori metodi di difesa, come l’uso di espressioni regolari per controllare i dati e altre misure avanzate di protezione.


I Cookie su questo sito:

Il nostro sito utilizza cookie e altre tecnologie in modo tale che sia noi, sia i nostri partner, possiamo ricordarci di te e capire come tu e gli altri visitatori utilizzate il nostro sito. Qui puoi trovare ulteriori informazioni sui cookie e le altre tecnologie. Chiudendo questo banner o continuando la navigazione acconsenti all'uso dei cookie. Acconsento Info Cookies