Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Protezione di un server condiviso

Come proteggere il server quando più applicazioni Web sono installate e dipendono dallo stesso processo Php e Apache
Come proteggere il server quando più applicazioni Web sono installate e dipendono dallo stesso processo Php e Apache
Link copiato negli appunti

Tutte le applicazioni PHP girano (a meno di installazioni particolari) col medesimo utente (quello di Apache) e, per quanto siano limitati i suoi permessi all'interno del filesystem, è pur vero questi medesimi permessi sono uguali per tutte le applicazioni stesse.  Di conseguenza, una tra esse potrebbe "sbirciare" i file dell'altra, compresi file di password e sessione.

In tali casi, nell'ottica di una corretta configurazione e ponendo che ciascun programma Web faccia capo ad un distinto virtual host, si devono differenziare:

  • le directory cui ogni programma può accedere;
  • le directory su cui i programmi scrivono i file di sessione;
  • il cookie_path di ognuno.

Per ottenere ciò si utilizzano le relative direttive PHP in dipendenza, appunto, dei vari virtual host gestiti da Apache.

Per proteggere i file di sessione interapplicazioni è da preferire, in ogni modo, il loro salvataggio su database ad opera degli script. Esistono classi già confezionate e molto semplici da usare per lo scopo. Vediamo qualche esempio.

Esempio di configurazione di Apache2 (file in sites-enabled/) relativo ad un virtual host name-based:

[VirtualHost 192.168.0.200] 
    ServerName blablabla_url
    DocumentRoot /var/www/blablabla_app/
    php_admin_value open_basedir /var/www/blablabla_app/
    php_admin_value [...]

    [...]
[/VirtualHost] 

Il programma PHP che risponde ad http://blablabla_url potrà ora vedere solamente /var/www/blablabla_app/ e relative sottodirectory. Ulteriori virtual host seguiranno tale logica.

Altre direttive

Ogni estensione non usata dall'applicazione PHP deve essere rimossa anche (e soprattutto) da qui. In altre parole, se PostgreSQL non viene usato è bene eliminare la direttiva extension=pgsql.so.

Al termine della modifica al file di configurazione, riavviare Apache:

/etc/init.d/apache2 restart

Ti consigliamo anche