L'attuazione di un conto bancario con Ajax in un carrello della spesa

Implementazione di un conto in banca

L'implementazione di un conto bancario è simile ad attuare un carrello della spesa. L'unica vera differenza è che avete bisogno di sicurezza. Ad esempio, se i registri Maryjane sul suo conto, e lei fa riferimento l'URL / account / Maryjane, poi si desidera solo Maryjane o una persona adeguata per visualizzare i dati. Chiunque altro dovrebbe ricevere un messaggio di errore non valido credenziali di sicurezza. Il resto di questo articolo si concentrerà su come utilizzare i cookie e l'autenticazione HTTP per l'autenticazione degli utenti:

• HTTP cookies: HTTP cookie sono identificatori inviati nell'intestazione HTTP tra il client e il server. Il server è responsabile per la generazione di un cookie, e il cliente è responsabile per l'invio del cookie al server per un determinato URL e dei suoi discendenti.

Autenticazione HTTP: Utilizzando l'autenticazione HTTP, è possibile autenticare gli utenti. Poi, ogni volta che il contenuto utenti richiesta di un regno dato URL, il client invia le informazioni di autorizzazione. L'autenticazione HTTP è simile a un cookie, salvo che gli utenti devono autenticarsi. Sia che utilizzano i cookie o l'autenticazione HTTP, il client invia un token ogni volta che desidera accedere a un determinato URL. Il server di convalidare se il token ha il permesso di accedere alla URL.

Utilizzo di Cookies per autorizzare l'accesso

  

HTTP cookies4 hanno una cattiva reputazione, in parte immeritata, e quindi molti sostengono che non si deve utilizzare i cookie. Il problema con i cookies non ha a che fare con la loro teoria, ma piuttosto con la loro attuazione e ramificazioni. Come una vera analogia vita, prendere in considerazione di un centro commerciale in cui qualcuno ti dà un token all'ingresso, che si può prendere o rifiutare . Se si rifiuta il token e di entrare nel centro commerciale, tutte le porte del negozio improvvisamente vicino. Si può vagare per il centro commerciale, ma si può solo guardare la merce attraverso le finestre. È comunque possibile visualizzare i contenuti e tutto ciò che offre il negozio, ma è dietro il vetro. D'altra parte, se si accetta il token, il negozio porte rimangono aperte, e si può passare in rassegna tutti i prodotti. Per essere utile, i commessi offrire raccomandazioni sulle migliori offerte del centro commerciale. Eppure vi è una sfumatura scura con l'esperienza: il centro commerciale sta guardando ogni passo che fai, e tutto ciò che si guarda viene monitorato. Naturalmente, il centro commerciale assicura che i dati non saranno utilizzati per altri scopi, ma la domanda è: dove fare le raccomandazioni o migliori offerte provengono? I token o cookie vengono utilizzati per tracciare le persone. Ho diviso per quanto riguarda l'uso dei cookie trovo nulla di estremamente inquietante su di loro, né io sono entusiasta di loro. Cookie HTTP sono un mezzo per raggiungere un fine.

Generazione del Cookie

E 'possibile generare un HTTP cookie5 senza utilizzare alcun aiuto da una libreria. A causa della prevalenza dei cookies, la maggior parte server-side librerie hanno classi o funzioni per generare cookies sulla base di alcuni parametri. Utilizzando il server a disposizione le librerie lato è altamente consigliato. Generare il cookie utilizzando il server-side librerie non è difficile. Quando si utilizza ASP.NET, è necessario utilizzare il seguente codice:

Mycookie HttpCookie = new HttpCookie ( "Sample", "myvalue"); mycookie.Path = "/ ajax/chap07"; Page.Response.Cookies.Add (mycookie);

Si crea un'istanza di un cookie (HttpCookie), e aminimum, è necessario specificare la chiave (campione) e valore (myvalue). La combinazione di tasti coppia di valore sono state inviate tra il client e server. Il mycookie.Path proprietà dei cookie specifica per la quale URL e dei suoi discendenti il cookie è valido. Confrontando questo per l'autenticazione HTTP, il percorso del cookie è pari al regno di autenticazione HTTP. Si aggiunge il cookie di nuova costituzione per la risposta utilizzando il metodo Page.Response. Cookies.Add. Quando un cookie viene aggiunto, la risposta HTTP genererà un cookie con il Set-Cookie header HTTP, come dimostra la risposta del server HTTP seguenti:

HTTP/1.0 200 OK Server: Mono-XSP Server/1.1.13.0 Unix X-Powered-By: Mono Date: Mon, 28 Aug 2006 17:31:14 GMT Content-Type: text / html; charset = utf-8 Set -Cookie: Esempio = myvalue; path = / ajax/chap05 Content-Length: 388 Keep-Alive: timeout = 15, max = 99 Connection: Keep-Alive

Il campione cookie ha un valore di myvalue ed è valido per il percorso / ajax/chap05. Perché non c'è scadenza di valore, il cookie è valido solo per la durata del browser. Se il browser viene chiuso, il cookie viene eliminato, così comportandosi come l'autenticazione basata su HTTP identificativo utente.

Capire come la Gestione del Cliente Cookie

Quando il client riceve il cookie, il cookie verrà salvato automaticamente se il cliente è un browser o l'oggetto XMLHttpRequest del browser. In realtà, il JavaScript sul lato client non ha assolutamente nulla a che fare con i cookie assegnato, perché tutto avviene in modo trasparente . Per esempio, se un browser carica una pagina e un cookie è stato assegnato per l'intero dominio, il cookie verrà inviato quando l'oggetto XMLHttpRequest chiede una pagina all'interno del dominio. Archiviazione di informazioni sensibili, come password o qualsiasi tipo di informazione personale, all'interno di il cookie non è raccomandato. Un cookie è un riferimento alle informazioni, non è un repository di informazioni. Quando gli utenti sono stati autenticati usando altri mezzi, un cookie dovrebbero essere utilizzate solo come un token per identificare l'utente.

Identificare un utente con un cookie

Quando il server genera un cookie, non significa nulla, perché un cookie è solo un token. Il cookie deve essere riferimenti incrociati con un utente specifico. Per crossreference il token, è necessario applicare un meccanismo di autenticazione. È possibile utilizzare uno dei due meccanismi di autenticazione. In primo luogo, si potrebbe legare il cookie di autenticazione HTTP. In secondo luogo, si potrebbe creare una pagina HTML che associa il cookie con un utente. Utilizzare l'autenticazione HTTP per associare un utente con un cookie comporterebbe proteggere un file che richiede l'autenticazione esplicito. Quando l'utente viene autenticato utilizzando l'autenticazione HTTP, il file protetto è responsabile per associare il cookie e le informazioni di autenticazione. L'utente non deve essere autenticato utilizzando l'autenticazione HTTP. Un form HTML potrebbe essere utilizzato. Utilizzando il modulo HTML, sei responsabile di fornire il codice che gestisce un utente. A causa di questo codice aggiunto, il meccanismo di autenticazione HTTP è preferibile, perché è la base del protocollo HTTP.

Utilizzando il protocollo HTTP Authentication

L'autenticazione HTTP è probabilmente una delle tecniche più sottoutilizzate di creare un identificativo utente. Maggior parte delle applicazioni web tendono a preferire i cookie HTTP, ma l'autenticazione HTTP offre alcuni ancora-to-be-discusse le opzioni che i cookie HTTP non. Nei primi anni novanta, l'autenticazione HTTP non era ben nota ed è stata considerata in generale insicurezza, perché il cliente sarebbe in costante essere l'invio di username e password al server ogni volta che l'autorizzazione è stata effettuata. Per aggirare il problema della sicurezza, una forma più sicura di autenticazione HTTP è stato creato, chiamato HTTP digest di autenticazione. HTTP digest di autenticazione non è stata diffusa nei primi giorni web. Naturalmente, oggi che non è il caso, come tutti i browser, o almeno la maggior parte dei browser, supporto HTTP digest di autenticazione. Autenticazione HTTP è sia una benedizione e una maledizione, nel senso che gli utenti devono autenticarsi ogni volta che chiudere e riavviare il browser. La benedizione è che le informazioni di autenticazione non viene inviato in automatico, e la maledizione è che gli utenti devono autenticarsi prima di iniziare una sessione sul sito AWeb. Alcuni possono ritenere che richiedono di essere autenticati un lato negativo, ma quando la sicurezza è importante, utilizza l'autenticazione HTTP assicura i diritti di dare corretta per l'utente identificato. A livello tecnico, l'autenticazione HTTP è un meccanismo mediante il quale un utente richiede il contenuto di una risorsa, e il server invia una sfida, chiedendo per l'identificazione. Dopo che l'utente inserisce le informazioni del caso, il server autenticare l'utente. Se l'autenticazione funziona, il browser scarica la rappresentazione della risorsa. Una tipica conversazione HTTP digest di autenticazione è descritto nella seguente procedura. Il processo inizia con il cliente che chiede una risorsa:

GET / test / HTTP/1.1 Host: Giove: 8100 User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US, rv: 1.7.8) Gecko/20050511 Accept: text / xml , application / xml, application / xhtml + xml, text / html; q = 0.9, text / plain; q = 0.8, image / jpeg ,*/*; q = 0.5 Accept-Language: en-us, en; q = 0,5 Accept-Encoding: gzip, deflate Accept-Charset: ISO-8859-1, utf-8; q = 0.7, *; q = 0.7 Keep-Alive: 300 Connection: keep-alive La risorsa è protetta, e quindi il server sarà sfida per l'autenticazione: HTTP/1.1 401 Authorization Required Date: Sun, 27 Aug 2006 14:00:05 GMT Server: Apache/2.0.53 (Ubuntu) PHP/4.3.10-10ubuntu4 WWW-Authenticate: Digest realm = " Private Domain ", nonce =" 0hvlrVH/AwA = 8225d4804076a334d81181695204fee405adaaee ", algorithm = MD5, domain =" / test ", qop =" auth "Content-Length: 497 Keep-Alive: timeout = 15, max = 100 Connection: Keep - Alive Content-Type: text / html; charset = iso-8859-1

 

Il client riceve il codice di errore HTTP 401 e cerca l'header HTTP WWW-Authenticate. Il valore della HTTP WWW-Authenticate contiene il meccanismo di autenticazione viene richiesto. In questo esempio, l'autenticazione HTTP digest è richiesto. Come nota a margine, è possibile utilizzare l'autenticazione di base, ma perché non è considerato sicuro, si è evitata. Come una risposta alla sfida, il browser genera una finestra di dialogo, per chiedere un nome utente e password. L'utente digita il nome utente e password, che fa sì che il browser di nuovo la richiesta iniziale con l'aggiunta di informazioni di autenticazione degli utenti, come illustrato di seguito:

GET / test / HTTP/1.1 Host: localhost: 8100 User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US, rv: 1.7.8) Gecko/20050511 Accept: text / xml , application / xml, application / xhtml + xml, text / html; q = 0.9, text / plain; q = 0.8, image / jpeg ,*/*; q = 0.5 Accept-Language: en-us, en; q = 0,5 Accept-Encoding: gzip, deflate Accept-Charset: ISO-8859-1, utf-8; q = 0.7, *; q = 0.7 Keep-Alive: 300 Connection: keep-alive Authorization: Digest username = "cgross", realm = "Private Domain", nonce = "0hvlrVH/AwA = 8225d4804076a334d81181695204fee405adaaee", uri = "/ test /", algorithm = MD5, response = "fc4ec419438f87a540d8898a537ea401", qop = auth, nc = 00000001, cnonce = "01b6730aae57c007"

La domanda risultante è simile alla richiesta iniziale, a meno che vi sia un header HTTP supplementari, Autorizzazione. Di fronte alla richiesta di URL stesso, le ricerche di server per l'intestazione Autorizzazione HTTP. Se il server si trova l'intestazione, il server di verificare le informazioni e poi, a seconda della verifica, o restituire un altro errore HTTP 401, causando il browser per generare una finestra di dialogo che chiede all'utente di autenticare se stesso, o considerare l'utente autenticato. Se le informazioni fornite di autenticazione è corretta, la rappresentazione associata viene scaricato. Quando si utilizza l'autenticazione HTTP, il header HTTP di autorizzazione viene inviata a tutti gli URL e loro familiari a carico, che sono stati precisati dal WWW-Authenticate inviati dal server. In questo esempio, il dominio value = "/ test" si riferisce al singolo URL / test e le sue dipendenze.

L'attuazione di autenticazione HTTP

Non si dovrebbe scrivere codice che gestisce l'autenticazione HTTP. Tutti i server Web sono in grado di gestire l'autenticazione HTTP, e si deve lasciare questo come un esercizio amministrativo. Questo non significa che non si utilizza l'autenticazione HTTP. Hai ancora bisogno di sapere se un utente è autenticato, ed è necessario associare l'utente alle informazioni identificativo utente. Dal punto di vista programmatico, le informazioni di autenticazione è disponibile dal server fornito la struttura richiesta.

Autenticazione quando non è necessaria

Uno degli effetti collaterali di autenticazione HTTP è che il contenuto di solito è o protetti o non protetti. Tradizionalmente ed è per questo che i cookie vengono utilizzati di autenticazione HTTP non può essere spento per una risorsa e poi tornò indietro di nuovo per la stessa risorsa. Che confondere gli utenti, perché così com'è adesso, l'autenticazione HTTP è un'impostazione globale e non una singola impostazione. In altre parole, se l'autenticazione è necessario per uno, allora è necessario per tutti. Che potrebbe costituire un problema. Diciamo che un utente sta navigando su un sito e vuole acquistare qualcosa, che l'utente avrà bisogno di un carrello della spesa. Tuttavia, un identificativo utente è necessaria per implementare un carrello della spesa. Per creare un carrello della spesa, le risorse non protette devono essere protette, ma la protezione è globale, in modo che tutti avrebbero bisogno di ottenere un carrello dopo la consultazione della prima pagina di un sito di shopping e iniziare a comprare qualcosa. Bella idea per far ripartire l'economia, ma non accadrà. Per aggirare questo problema di protezione a volte, è possibile utilizzare una tecnica di autenticazione HTTP, come segue: 1. Permettere all'utente di navigare il sito come al solito (per esempio, http://mydomain.com/browse). 2. Su ogni pagina rassegna, aggiungere un collegamento protetto per indicare che l'utente vuole essere autenticati (http://mydomain.com/browse/authenticate). 3. Quando l'utente fa clic sul link di autenticazione dopo l'autorizzazione, i regni HTTP (domini) che includono i contenuti non protetti vengono assegnati nella risposta (http://mydomain.com/browse). 4. Quando l'utente accede al URL http://mydomain.com/browse, le informazioni di identificazione utente viene inviato, anche se non è richiesto. Questo trucco funziona molto bene se si utilizza l'autenticazione digest HTTP. Il seguente esempio di configurazione di Apache HTTPD utilizza questa tecnica:

Directory "/ var / www / browse / autenticazione"> AllowOverride AuthConfig AuthType Digest AuthDigestDomain / browse / browse / autenticazione AuthDigestFile "/ etc/apache2/digestpasswd" AuthName "Private Domain" Require valid-user 

La tecnica è stata recepita con la voce di configurazione AuthDigestDomain, dove entrambi gli URL / navigare e / browse / autenticazione si fa riferimento. Perché l'elemento di configurazione riferimenti Directory l'URL / browse / autenticazione, solo l'URL / browse / autenticazione sarà contestato per l'autenticazione. Per illustrare che la tecnica funziona davvero, si consideri la seguente conversazione HTTP. In primo luogo, viene effettuata una richiesta per una risorsa non protetto:

GET / browse / HTTP/1.1 Host: Giove: 8100 User-Agent: Mozilla/5.0 (compatible; Windows NT 5.0; en-US, rv: 1.7.5) Gecko/20041220 K-Meleon/0.9 Accept: text / xml, application / xml, application / xhtml + xml, text / html; q = 0.9, text / plain; q = 0.8, image / jpeg ,*/*; q = 0.5
Il server risponde come al solito con un HTTP 200 codice di ritorno, che fa sì che il client per caricare la pagina risultante. Quindi il client effettua un'altra richiesta per il collegamento protetto, in quanto l'utente vuole fare shopping e deve essere autenticato. Il client effettua la seguente richiesta per il contenuto protetto:
GET / browse / autenticazione HTTP/1.1 Host: 192.168.1.103:8100 User-Agent: Mozilla/5.0 (compatible; Windows NT 5.0; en-US, rv: 1.7.5) Gecko/20041220 K-Meleon/0.9 Accetta : text / xml, application / xml, application / xhtml + xml, text / html; q = 0.9, text / plain; q = 0.8, image / jpeg ,*/*; q = 0.5 Il server risponde con una sfida di autenticazione: HTTP/1.1 401 Authorization Required Date: Mon, 28 Aug 2006 16:08:28 GMT Server: Apache/2.0.53 (Ubuntu) PHP/4.3.10-10ubuntu4 WWW-Authenticate: Digest realm = "Private Domain", nonce = "yiLhlmf / AWA = e1bafc57a6151c77e1155729300132415fc8ad0c", algorithm = MD5, domain = "/ browse / browse / autenticazione", qop = "auth" Content-Length: 503 Content-Type: text / html; charset = iso-8859-1
Nella risposta del server per l'identificatore di dominio, una risorsa non protetto è definito. Questa è la tecnica usata per inviare le informazioni di autorizzazione per i contenuti non protetti. Il client risponde con l'autenticazione degli utenti, come segue:
GET / browse / autenticazione HTTP/1.1 Host: 192.168.1.103:8100 User-Agent: Mozilla/5.0 (compatible; Windows NT 5.0; en-US, rv: 1.7.5) Gecko/20041220 K-Meleon/0.9 Accetta : text / xml, application / xml, application / xhtml + xml, text / html; q = 0.9, text / plain; q = 0.8, image / jpeg ,*/*; q = 0.5 Authorization: Digest username = "cgross" , realm = "Private Domain", nonce = "yiLhlmf / AWA = e1bafc57a6151c77e1155729300132415fc8ad0c", uri = "/ browse / autenticazione", algorithm = MD5, response = "c9b5662c034344a06103ca745eb5ebba", qop = auth, nc = 00000001, cnonce = "082c875dcb2ca740"
Dopo l'autenticazione, il server permette il download di contenuti protetti. Ora, se il cliente accede gli URL non protetto di nuovo, le informazioni che l'autorizzazione viene passato al server, come illustrato dal seguente richiesta:
GET / browse / morecontent / HTTP/1.1 Host: Giove: 8100 User-Agent: Mozilla/5.0 (compatible; Windows NT 5.0; en-US, rv: 1.7.5) Gecko/20041220 K-Meleon/0.9 Accept: / text xml, application / xml, application / xhtml + xml, text / html; q = 0.9, text / plain; q = 0.8, image / jpeg ,*/*; q = 0.5 Authorization: Digest username = "cgross", realm = "Private Domain", nonce = "yiLhlmf / AWA = e1bafc57a6151c77e1155729300132415fc8ad0c", uri = "/ browse / morecontent /", algorithm = MD5, response = "18ccd32175ce7a3480d5fbbc24de8889", qop = auth, nc = 00000005, cnonce = "0d448aca73b76eb1"

Per questa richiesta, il cliente ha trasmesso le informazioni l'autorizzazione per un URL che non richiede l'autenticazione. In poche parole, il meccanismo di autenticazione è diventata un "cookie HTTP", meccanismo che è controllata dal client. Il client è in pieno controllo di quando a diventare autenticate e quando rimanere anonimo. Dovreste ricordare i seguenti punti:

• L'articolo di attuazione di un carrello o conto corrente bancario comporta la definizione di un ricorso URL e un URL univoco.

• L'URL azione è responsabile per la generazione di un URL univoco.

• Si può considerare l'URL univoco per essere un URL personalizzato che sostituisce la necessità di mantenere un server-side oggetto di sessione.

• Server-side oggetti di sessione non sono utili quando si desidera scrivere flessibili i servizi web. Gli esempi carrello dimostrato che è possibile utilizzare carrelli della spesa predefinite per aggiungere valore a un negozio online.

• È possibile implementare il reindirizzamento dal URL azione per l'URL univoco usando i protocolli HTTP 300 serie di codici di stato. Tuttavia, non usare questa serie di risultati codici di stato nel chiamante XMLHttpRequest sapere che cosa è l'unico URL.

• Il meccanismo preferito quando si utilizza XMLHttpRequest per reindirizzare è quello di utilizzare il codice di stato HTTP 201. Questo codice indica che una nuova risorsa è stata creata, che, dal punto di vista teorico, corrisponde l'intento del principio URL univoco.

• Il server in genere non tiene traccia URL unici. E 'responsabilità del cliente per associare un particolare utente, con un particolare URL univoco. Se l'URL univoco è anonimo, come un carrello della spesa, allora dovreste usare i cookies client-side. Se l'URL univoco ha restrizioni di sicurezza, allora si dovrebbe utilizzare il server-side o cookie di autenticazione HTTP.

• In caso di applicazione di sicurezza, è possibile utilizzare i cookie finché i cookies non sono utilizzati per produrre i contenuti. I cookie sono utilizzati per autorizzare l'accesso a una risorsa.

• Cookie e meccanismi di autenticazione HTTP sono il preferito mezzi utilizzati per attuare l'identificazione dell'utente.

• Quando si implementa la funzionalità di reindirizzamento, non si può cache della risposta data dal ricorso URL, perché porterà a problemi di coerenza dei dati.

• URL unici sono trasformati sul lato server utilizzando uno dei due meccanismi: un meccanismo di riscrittura degli URL predefiniti, come ad esempio Apache mod_rewrite, o l'implementazione di un filtro che si rivolge a un gestore specifico. Il meccanismo preferito è un filtro che si rivolge a un gestore specifico, ma per scopi legacy, è completamente accettabile per utilizzare un meccanismo di riscrittura degli URL predefinito.

un articolo presentato da Sonja Lande


Disclaimer:Il nostro sito non è responsabile per il contenuto di questo articolo. Webarticles è una risorsa gratuita di informazioni.
Importante: Questo articolo "L'implementazione di un conto bancario con Ajax in un carrello della spesa" è stato tradotto da un software automatico. Ci dispiace per eventuali errori di ortografia che possono essersi verificati. Grazie per la vostra comprensione.


Online: 378 users browsing the articles directory