Używam nodejs do napisania usługi przesyłania obrazów. Płacący klienci będą mogli wysłać plik obrazu do mojego punktu końcowego, który ustawiłem na moim serwerze. Jednak, gdy każde żądanie przychodzi, muszę potwierdzić, że jest to faktycznie klient płacący, który zgłasza żądanie. Myślałem o tym, żeby klient dał mi swoją nazwę domeny, a ja po prostu sprawdziłbym nagłówek referera. Jednak ktoś może łatwo podrobić nagłówek referera i korzystać z mojej usługi bez płacenia. Jak deweloperzy SaaS stają przed tym problemem technicznym? Czy można to naprawić, nie wymagając od moich klientów kodu po stronie serwera?Jaki jest bezpieczny sposób poznania referera/referrera w żądaniu HTTP?
Odpowiedz
Nie można uwierzytelnić przeglądarki za pomocą nagłówka strony odsyłającej.
Jeśli chcesz uwierzytelnić osobę fizyczną, prawdopodobnie będziesz potrzebować systemu logowania, który udostępnia dane uwierzytelniające (nazwa użytkownika/pwd), i sprawdzisz je w stosunku do dozwolonej liczby użytkowników. Jeśli przejdą, to ustawiasz w przeglądarce pewien rodzaj pliku cookie, który wskazuje, że jest legalnym użytkownikiem. Kolejne żądania od tego użytkownika będą zawierać ten plik cookie, który można sprawdzić na każde żądanie.
Plik cookie musi być utworzony przez użytkownika, który można zweryfikować, którego nie można łatwo odgadnąć lub sfałszować (jak sesja lub zaszyfrowany token z serwera). Zazwyczaj po upływie określonego czasu ustawisz wygaśnięcie pliku cookie, aby użytkownik musiał się ponownie zalogować.
Uzgodnione. Istnieje darmowa struktura o otwartym kodzie źródłowym o nazwie OAuth, która wykona wiele pracy za Ciebie: http://oauth.net. Oto link do kodu JavaScript, którego możesz użyć, ponieważ otagowałeś JavaScript w swoim pytaniu: http://oauth.googlecode.com/svn/code/javascript/ –
Czy budujecie zewnętrzny hosting grafiki dla stron internetowych czy też dzielić coś, HAS za prywatne i SECURE? Jeśli to ta pierwsza, czytaj dalej.
Oczywiście nagłówek można sfałszować. Oto dlaczego nie należy martwić się o to:
alternatywna jest brzydki: Aby zbudować bezpieczną usługę zastrzegania, trzeba będzie opracować jakiś system tokena, że właściciel strony implementuje na jego końcu, jak również. Jest szansa, że nie zarejestruje się z tobą, ponieważ dostępne są prostsze alternatywy.
Podszywanie się będzie musiało zostać wykonane po stronie klienta. Bardzo niewielu "użytkowników" faktycznie to zrobi. Dwóch maniaków podszywających nagłówki na swojej maszynie nie zrobi dla ciebie dużej różnicy. Jeśli napiszą jakiś serwer pośredniczący lub oprogramowanie pośredniczące, które działa automatycznie i wiele osób zaczyna z niego korzystać, może to stanowić problem. Jednak nie jest to bardzo prawdopodobne.
Chyba już wiem, ale skoro nie wspomniałem - to się nazywa Hotlinking
. Google w tym temacie, aby znaleźć więcej zasobów.
- 1. Parametry przekazywania w żądaniu HTTP HTTP VBA
- 2. Ustawienie UserAgent w żądaniu http
- 3. Bezpieczny post HTTP w Androidzie
- 4. Czy jest jakiś sposób poznania pid z uruchomionego programu?
- 5. QNetworkReply i QNetworkAccessManager timeout w żądaniu http
- 6. Curl -u odpowiednik w żądaniu HTTP
- 7. Jaki jest najprostszy sposób utworzenia żądania HTTP GET w Perlu?
- 8. Jaki jest najłatwiejszy sposób użycia polecenia HEAD HTTP w PHP?
- 9. Jaki jest odpowiednik zwijania --upload-file w żądaniu węzła
- 10. Swift 2.0, Alamofire: Ustaw ciasteczka w żądaniu pocztowym HTTP
- 11. Brakujące elementy w żądaniu HTTP - puste lub puste?
- 12. Uzyskaj tekst stanu po nieudanym żądaniu http
- 13. Jaki jest zakres sesji HTTP?
- 14. Jaki jest właściwy sposób tworzenia komunikatów o błędach, które są zwracane w żądaniu ekspresowym?
- 15. Jaki jest właściwy sposób sprawdzania poprawności żądań HTTP i zwracania określonych odpowiedzi HTTP w pliku Global.asax?
- 16. W jaki sposób obsłużyć zasoby w MATLAB w sposób bezpieczny dla wyjątków? (Jak „try ... finally”)
- 17. Jak długo bezpieczny, bezpieczny kanał TCP jest bezpieczny?
- 18. Czy bezpieczny wątek SecureRandom jest bezpieczny?
- 19. Zmienianie ciągu znaków agenta użytkownika w żądaniu http w R
- 20. Jaki jest równoważnik WCF modułu HTTP?
- 21. Facebook login jest bezpieczny?
- 22. Bezpieczny sposób tworzenia względnego java.io.File
- 23. Jaki jest zalecany sposób uzyskania odpowiedzi HTTP jako ciąg podczas korzystania z klienta HTTP Apache?
- 24. Standardowy sposób wykrywania przeglądarek mobilnych w aplikacji internetowej opartej na żądaniu http
- 25. Najbardziej bezpieczny sposób przechowywać Plików
- 26. Czy istnieje wiele nagłówków plików cookie w żądaniu HTTP?
- 27. Jaki jest właściwy sposób obsługi ciągów char *?
- 28. W jaki sposób jest wdrażana wirtualizacja aplikacji?
- 29. Bezpieczny sposób konwertowania liczby całkowitej w enum
- 30. Utwórz plik w sposób bezpieczny dla wątków
Nie polegaj po stronie klienta w przypadku tego rodzaju pracy. –
Co powiecie na [OAuth] (http://oauth.net/documentation/getting-started/)? – ghoti