2012-07-29 12 views
6

Sto usando nodejs per scrivere un servizio di upload di immagini. I clienti paganti potranno inviare un file immagine al mio endpoint che ho configurato sul mio server. Tuttavia, quando arriva ogni richiesta, devo confermare che in realtà è un cliente pagante che effettua la richiesta. Ho pensato di farmi dare il nome di dominio al cliente e vorrei semplicemente controllare l'intestazione del referer. Tuttavia, qualcuno potrebbe facilmente falsificare l'intestazione del referer e utilizzare il mio servizio senza pagare. In che modo gli sviluppatori SaaS affrontano questo problema tecnico? È possibile risolvere questo problema senza richiedere ai miei client di avere un codice lato server?Qual è un modo sicuro per conoscere il referente/referente in una richiesta HTTP?

+0

Non dipendere dal lato client per questo tipo di lavoro. –

+0

Che dire di [OAuth] (http://oauth.net/documentation/getting-started/)? – ghoti

risposta

1

Non è possibile autenticare un browser con un'intestazione referrer.

Se si desidera autenticare un individuo, è probabile che sia necessario un sistema di accesso a cui fornire le credenziali (nome utente/pwd) e che si effettuino controlli rispetto alla base utenti consentita. Se passano, quindi si imposta un determinato tipo di cookie nel browser che indica che sono un utente legittimo. Le richieste successive di questo utente conterranno quel cookie che potrai controllare ad ogni richiesta.

Il cookie deve essere qualcosa che si crea che è possibile verificare che non può essere facilmente indovinato o falsificato (come una sessione o un token crittografato dal server). In genere, si imposta una scadenza sul cookie dopo un certo periodo di tempo in modo che l'utente debba effettuare nuovamente il login.

+0

concordato. Esiste un framework open source gratuito chiamato OAuth che svolgerà gran parte del lavoro per te: http://oauth.net. Ecco un link al codice JavaScript che puoi utilizzare, dal momento che hai taggato Javascript nella tua domanda: http://oauth.googlecode.com/svn/code/javascript/ –

2

State voi costruendo un'immagine esterna servizio di hosting per i siti web o ritieni che sia condividere qualcosa che HA di essere privato e SICURO? Se è il primo allora leggi avanti.

Ovviamente, l'intestazione può essere falsificata. Ecco perché non si dovrebbe preoccupare:

  1. alternativa è brutto: Per costruire un servizio di provisioning sicuro, si dovrà sviluppare un qualche tipo di sistema di token che il proprietario del sito implementa al suo fine pure. È probabile che non si iscriva a te perché ci sono alternative più semplici disponibili.

  2. Lo spoofing dovrà essere eseguito sul lato client. Pochissimi "utenti" lo faranno davvero. Due geek che spoilerano le intestazioni sulla loro macchina non faranno una grande differenza per te. Se scrivono del proxy o del middleware che funziona automaticamente e molte persone iniziano a usarlo, potrebbe essere un problema. Tuttavia questo non è molto probabile.

si indovina già sanno, ma dal momento che non ho menzionato - Si chiama Hotlinking. Google questo argomento per trovare più risorse.

Problemi correlati