giovedì 5 gennaio 2017

Forzare HTTPS per applicativi LAMP su OpenShift

Qualche tempo fa, con il compare Cranix, abbiamo deciso di provare a migrare un nostro applicativo LAMP di "produzione" da un hosting che non ci soddisfaceva troppo (di cui non è carino fare il nome) ad OpenShift. Fra i vari vantaggi che la piattaforma offre c'è la possibilità di usare, da subito e con setup di default, HTTPS come trasporto per servire le pagine; unica limitazione delle versione gratuita è l'impossibilità di usare una chiave "custom" ma le funzionalità restano complete.
Se usare connessioni criptate è da sempre una "best practice" da questo mese sembra debba, finalmente, diventare una "necessità": https://www.miamammausalinux.org/2016/12/chrome-si-muove-verso-un-web-piu-sicuro/.

Forse esistono metodi più eleganti per forzare un'applicativo LAMP qualunque ad usare la versione Sicura del protocollo, anche quando la richiesta da parte del client viene fatta su HTTP "liscio", ma nel nostro caso una funzione richiamata all'inizio dello Script Router è sembrata la soluzione ideale. Tuttavia l'implementazione che avevamo usato quando l'applicativo risiedeva sul precedente hosting causava un bel Error 310 (ERR_TOO_MANY_REDIRECTS). Gli stack LAMP non sono tutti uguali e, almeno quando ci si affida ad hosting "preconfigurati", bisogna adattare il proprio codice alla configurazione presente... con buona pace della portabilità!

/*
* Forza l'uso du HTTPS - SSL su OpenShift
*/

function requireSSL( ) {
 if( ! isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] !== "1" ) {
  header( "Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"] );
  exit();
 }
}

Per forzare il passaggio ad HTTPS di ogni richiesta pervenuta ad una data pagina basta richiamare, prima dell'emissione di qualsiasi output verso il client [si sta usando header()], la funzione senza nessun parametro:

requireSSL();

... se avete uno Script Router quello è l'unico punto in cui intervenire...

Nessun commento:

Posta un commento