$ _SERVER può essere falsificato / contraffatto?

La variabile PHP $ _SERVER ['SERVER_NAME'] può essere contraffatta o falsificata? Stavo pensando di usarlo come misura di sicurezza per la pubblicazione di moduli. Vorrei verificare che la variabile fosse il mio nome del sito (www.example.com). So che HTTP_REFERRER può essere simulato, ma non ero sicuro su questo.

Grazie!

In realtà $ _SERVER ['SERVER_NAME'] può essere influenzato da ciò che il browser client invia … Vedi http://shiflett.org/blog/2006/mar/server-name-versus-http-host per un'indagine attraverso su il problema.

Da un visitatore non può normalmente essere simulato. Ma sospetto che vorresti imporre un certo SERVER_NAME agli script di licenza in modo che possano essere utilizzati solo da domini particolari. In questo caso la risposta è sì, questa variabile può sicuramente essere falsificata .

Il motivo è semplice, il server imposta questo valore. Nella maggior parte dei casi avresti PHP in esecuzione come un module Apache, ma a volte hai altri moduli Apache, a volte hai PHP in esecuzione in modalità CGI con NGINX o IIS, a volte hai persino PHP in esecuzione come CLI forked come process figlio da una custom server integrato distribuito in un cloud. Quei server sarebbero responsabili per l'impostazione di tale variabile.

Inoltre, c'è sempre l'assegnazione manuale.

$_SERVER['SERVER_NAME'] = ... // this can go above all your scripts 

Non può essere simulato, persay, ma restituirà sempre il nome del tuo sito. È utile se si eseguono più siti dallo stesso script e, ad esempio, si utilizza un database diverso in base al nome host fornito.

La documentazione di PHP dice:

 'SERVER_NAME' The name of the server host under which the current script is executing. If the script is running on a virtual host, this will be the value defined for that virtual host.