PHP: perché diffidare di $_SERVER

Questo array superglobale di PHP contiene alcune informazioni non del tutto attendibili.

PHP di Gabriele Romanato

Questo array superglobale di PHP contiene alcune informazioni non del tutto attendibili.

Bisogna capire che $_SERVER viene popolato con le informazioni passate a PHP dal web server (Apache, nginx, ecc.). Generalmente queste informazioni si dividono in due categorie:

  1. informazioni interne
  2. informazioni esterne

Le informazioni interne (il protocollo, la directory di installazione del sito ecc.) sono di norma attendibili, a meno che non siano stati commessi errori nell'installazione e configurazione del web server.

Le informazioni esterne, ossia quelle ricavate dal client (HTTP_USER_AGENT, REMOTE_ADDR, REMOTE_HOST), possono essere sia direttamente falsificate dal client (ad esempio con una banale richiesta tramite curl) o dal web server (se ad esempio il web server funge da proxy).

La regola di massima è quella di diffidare sempre delle informazioni esterne e di effettuare verifiche più approfondite.

Commenti