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

REST e sicurezza HTTP

Gli aspetti fondamentali della della sicurezza di un servizio web e i meccanismi forniti da HTTP
Gli aspetti fondamentali della della sicurezza di un servizio web e i meccanismi forniti da HTTP
Link copiato negli appunti

Uno degli aspetti cruciali di qualsiasi applicazione Web è la gestione della sicurezza. L'esposizione di risorse accessibili tramite i meccanismi tipici del Web, come avviene con l'approccio REST per la creazione di Web Service, non si sottrae a questa necessità.

In linea di massima la sicurezza di un sistema coinvolge almeno i seguenti aspetti:

  • l'autenticazione, cioè la capacità di identificare le parti coinvolte in una comunicazione
  • l'autorizzazione, cioè la concessione dei diritti di accesso ad una risorsa in base all'identità
  • la fiducia, cioè la capacità di confidare nel risultato di un'operazione, come ad esempio l'autenticazione o l'autorizzazione, eseguita da terze parti
  • la riservatezza, cioè la capacità di mantenere l'informazione privata durante la trasmissione o la memorizzazione
  • l'integrità, cioè la capacità di prevenire che l'informazione possa essere modificata da terzi

Fortunatamente questi aspetti sono stati efficacemente affrontati in ambito Web ormai da diverso tempo per poter affermare di essere giunti ad un modello abbastanza maturo. In effetti, dal momento che l'approccio REST nella creazione di Web Service è largamente basato sul protocollo HTTP, la gestione della sicurezza ne eredita le caratteristiche ormai collaudate.

In sostanza, per gestire l'identità nell'ambito di un Web Service RESTful possono essere utilizzati i
meccanismi propri del protocollo HTTP, come ad esempio l'HTTP Basic Authentication o l'HTTP Digest Authentication.

Ad esempio, se un client richiede l'accesso ad una risorsa protetta, il server può richiedere l'autenticazione con una risposta HTTP analoga alla seguente:

401 Unauthorized
WWW-Authenticate:
Basic realm="risorsaRiservata"

La risposta richiede di autenticarsi utilizzando l'HTTP Basic Authentication.
Il client invierà una risposta di questo tipo:

GET /ordini/?123 HTTP/1.1
Host: www.mionegozio.com
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

dove le credenziali di autenticazione vengono passate sotto forma di stringa codificata in Base64.

Da questo momento in poi, ciascuna richiesta inviata al server conterrà le credenziali prevenendo ulteriori richieste da parte del server e mantenendo la natura stateless dell comunicazione HTTP.

Naturalmente l'invio delle credenziali con la semplice codifica Base64 non è sufficiente garanzia di riservatezza. L'uso dell'HTTP Digest Authentication è sicuramente un passo avanti per evitare la trasmissione in chiaro della password, ma non è esente da possibili attacchi.

La soluzione che in genere andrebbe adottata consiste nella creazione di un canale di trasmissione sicuro, come può essere HTTPS, cioè HTTP over SSL/TLS. L'adozione di HTTPS garantisce la riservatezza e l'integrità nella trasmissione delle informazioni, coprendo gli altri aspetti di sicurezza.

Ti consigliamo anche