2015-04-09 25 views
5

Abbastanza nuovo per Node ed Express. Ho un'app sails.js che si basa sulla conoscenza dell'origine di una richiesta in quanto ho bisogno di autenticare la richiesta proviene da un dominio che è registrato.req.headers.origin non è definito

Ho visto nei registri che l'origine è vuota occasionalmente, perché dovrebbe succedere? Non è una buona idea affidarsi alla proprietà di origine, c'è un'altra opzione?

Grazie

risposta

9

L'origine possono essere nascoste se l'utente proviene da uno SSL crittografato sito web.

Inoltre: alcune estensioni del browser rimuovono l'origine e il riferimento dalle intestazioni di richiesta http, pertanto la proprietà di origine sarà vuota.

È possibile creare una sorta di token di autenticazione e passarlo come parametro, invece di fare affidamento sulle intestazioni delle richieste. Soprattutto perché le intestazioni possono essere falsificate/manipolate.

+0

Brillante, grazie @peanut. Questo ha molto senso ora. Ho già i token di autenticazione ma è facile per qualcuno trovarli mentre il mio servizio utilizza una parte di JS che chiunque può installare sul proprio sito in modo che l'origine fosse un'altra parte del controllo di sicurezza. Quale sarebbe un modo migliore per aggirare questo? Non c'è ancora modo di ottenere l'origine in modo affidabile? –

+0

Genera i token sul lato server. Usa qualcosa che solo il tuo server può generare (cioè basato su una password, o qualcosa di simile, in modo che un server possa generarlo e l'altro possa convalidarlo). Questo è un po 'troppo complicato da spiegare in un singolo commento difficile. Ci sono un sacco di tutorial e documenti su questo argomento però. – Peanut

+0

Va bene, grazie per avermi spinto nella giusta direzione :) –