Corsi on-line

Creare aree ad accesso riservato con CGI

  • CommentiScrivi un commento
  • ForumDiscuti sul forum
  • PrevCrare un sondaggio con CGI
  • Next

CGI consente di creare aree di accesso riservato all'interno di siti web in diversi modi, questo articolo descriverà le procedure relative a pagine protette da sistema di autenticazione HTTP e da semplice sessione di login.

In pratica una richiesta di autenticazione HTTP funziona grazie all'interazione tra server e client sulla base delle richieste inviate dagli utenti tramite browser internet:

  1. Il programma di navigazione effettua la richiesta di una risorsa attraverso la digitazione di una URL.
  2. Dato che la pagina contenente la risorsa è riservata, il server a sua invierà all'utente una richiesta di autenticazione necessaria perchè sia autorizzato all'accesso.
  3. Il browser mostra all'utente un'interfaccia (prompt) che tipicamente sarà costituita da un modulo all'interno del quale inserire le proprie credenziali d'accesso: unsername e password.
  4. Il browser invia al server una nuova richiesta di autorizzazione, questa volta completa di nome utente e relativa parola chiave che generalmente subisce un processo di criptaggio.
  5. I dati inviati vengono raccolti dal server e quindi validati; nel caso in cui le credenziali fornite dall'utente siano sufficienti e corrette sarà messa a disposizione in output la risorsa richiesta.
I sistemi di autenticazione HTTP sono ritenuti abbastanza sicuri, tanto che vengono spesso utilizzati come ulteriore protezione a script di login realizzati in linguaggi server side come PHP o ASP.

I dati richiesti per l'accesso possono essere validi per tutta la "gerarchia" interna alla directory contenente la risorsa richiesta (cartelle, sotto-cartelle e file) ma è possibile richiedere ulteriori autorizzazioni. Ciò accade nel caso diversi utenti siano destinati ad accedere a risorse differenti e solo a quelle.

L'articolo continua dopo la pubblicità

Uno dei metodi per richiedere autorizzazioni tramite headers ("intestazioni") HTTP è quello di utilizzare un file .htaccess per la protezione dell'area che si intende riservare soltanto a determinati utenti. Ecco un esempio di come potrebbe essere scritto un file di questo tipo:

AuthType Basic 
AuthName "Area riservata" 
AuthUserFile /usr/home/mrw/htpasswd
AuthGroupFile /usr/home/mrw/htgroup
require valid-user
In pratica dovranno essere indicati nel documento i seguenti parametri: il tipo di autenticazione richiesta, il percorso al file contenente le password di autenticazione (criptate) e il percorso al file relativo ai gruppi con privilegi di accesso.

Non sempre si ha però la possibilità di utilizzare i file .htaccess, il motore del server potrebbe non essere configurato per accettarli o l'accesso ai contenuti del sito potrebbe essere limitato per questioni di sicurezza.
E' comunque possibile ottenere un risultato molto simile utilizzando uno script CGI da creare utilizzando poche righe di codice:

void CGI::authenticate
( 
const char* authtype, 
const char* realm, 
void callback (const int) = 0 
) 
const
{ 
  cout << "Status: 401 Autenticazione richiesta\n" 
  "WWW-Authenticate: " << authtype <<"; 
  realm=" << realm << "\n" ; 
   
  if (callback) callback(401) ; 
  else cout << 
  "Content-type: text/plain\n" 
  "\nPer accedere alla risorsa sono necessari user e pass." ;
  exit(0) ; 
}
Come è facile notare, anche in questo caso viene indicata innanzitutto la tipologia di autenticazione; inizialmente la pagina che permette l'accesso alla risorsa entra in "status 401" (Authentication Required) per negare l'accesso immediato; quindi l'utente viene informato del fatto che per autenticarsi avrà bisogno di inserire nel prompt i dati corretti.

Se non si desidera utilizzare un sistema di autenticazione così raffinato come quello basato sugli header HTTP, CGI permette comunque di creare anche semplici file contenenti tutti i dati necessari per l'autenticazione:

use CGI;
use CGI::Session;
use CGI::Session::Auth;

#istanza degli oggetti relativi alle intestazioni
my $cgi = new CGI;

#definizione dell'oggetto relativo alla sessione
my $sessione = new CGI::Session(undef, $cgi, 
{Directory=>'/tmp'});

#definizione dell'oggetto relativo all'autenticazione
my $auth = new CGI::Session::Auth({ 
CGI => $cgi, Session => $session 
});
$auth->authenticate();
  
#controllo dello stato dell'autenticazione
if ($auth->loggedIn)
{
  showSecretPage;
}else{
  showLoginPage;
}
Lo script appena proposto, si basa sulla classe Perl "CGI::Session::Auth" creata appositamente per le procedure di autenticazione in CGI.

Corsi
  • Corso Linux
    Corso Linux
    Guida completa al sistema open-source. A partire da 39 €
  • Corso MySQL
    Corso MySQL
    Gestione del database open-source. A partire da 39 €
  • Corso PHP
    Corso PHP
    Creare siti web dinamici avanzati con PHP e MySQL. A partire da 39 €
Vedi anche...
Guide