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?
risposta
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.
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/ –
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:
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.
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.
- 1. È richiesta una richiesta PUT HTTP per includere un corpo?
- 2. Qual è il modo migliore/più sicuro per reinstallare Homebrew?
- 3. È un modo sicuro per ottenere il corpo di una richiesta HttpContext
- 4. Qual è il modo corretto per disconnettere in modo sicuro un socket SSL asio?
- 5. In ASP.NET, qual è il modo più rapido per ottenere l'URl di base per una richiesta?
- 6. È un modo sicuro per cancellare una password?
- 7. Qual è il modo più semplice per utilizzare il comando HEAD di HTTP in PHP?
- 8. C'è un modo per conoscere il metodo di richiamo?
- 9. Quanto è sicuro un POST HTTP?
- 10. Qual è il modo più sicuro per connettersi ad Active Directory da una DMZ?
- 11. Qual è il modo migliore per impostare l'URL di base per una richiesta Ajax utilizzando Jquery?
- 12. Qual è un modo sicuro per incrementare un int in un'espansione di template variadic?
- 13. È un modo sicuro per impostare il token CSRF?
- 14. Qual è il modo migliore per conoscere l'implementazione della VM oltre al codice di hacking?
- 15. Modifica intestazioni HTTP per una richiesta JSONP
- 16. È sicuro un POST da HTTP a HTTPS?
- 17. È sicuro utilizzare l'intestazione "X -..." in una risposta HTTP?
- 18. Qual è il modo migliore per analizzare questo in C++?
- 19. Qual è il modo corretto e sicuro per mantenere un utente connesso? biscotti? sessione? PHP && MYSQL
- 20. Richiesta POST HTTP vuota o richiesta GET per generare un valore casuale tramite un'API HTTP
- 21. Posso modificare il contenuto di una richiesta HTTP in arrivo utilizzando un modulo HTTP?
- 22. Come passare una stringa C++ a JNI Java in un modo sicuro per thread sicuro?
- 23. Esiste un modo per convertire la posta in arrivo in una richiesta POST HTTP?
- 24. sicuro-HTTP in una composer.json non funziona
- 25. Qual è il modo migliore per annullare una richiesta WCF asincrona?
- 26. Qual è il modo più semplice e sicuro per autenticare gli utenti tramite AJAX?
- 27. qual è il modo per rappresentare un UNICHAR in lua
- 28. Qual è il codice di risposta HTTP corretto per la richiesta senza campi obbligatori
- 29. Qual è il modo consigliato per ottenere la risposta HTTP come stringa quando si utilizza il client HTTP di Apache?
- 30. Qual è un modo corretto per convalidare le richieste HTTP e restituire risposte HTTP specifiche in Global.asax?
Non dipendere dal lato client per questo tipo di lavoro. –
Che dire di [OAuth] (http://oauth.net/documentation/getting-started/)? – ghoti