2013-05-12 12 views
6

W systemie opartym na REST, jakie są opcje "szyfrowania" identyfikatorów zasobów.Zabezpieczenia REST Projekt dobrej praktyki przy eksponowaniu zasobów ID

Na przykład:

/client/2 

byłyby dostępne w

/client/SOMEHASHKEY 

myślę:

1 - Czy DB tabel, które śledzi identyfikator zasobów i to odpowiada HASH i sprawdź to na każde żądanie. To oczywiście wydaje się dość trudne do wdrożenia i znacznie zwiększa pracę serwera.

2 - mieć jakiś algorytmu szyfrującego wewnętrznego, które utworzyć skrót na przykład w oparciu o dacie utworzenia zasobów, zasoby ID i base64 to (oczywiście nie jest optymalny, ale o co chodzi)

Więc są tam dobre praktyki dla tego rodzaju scenariuszy? Co byś polecił ?

Wiele Dzięki

Odpowiedz

2

Jeśli twoim zamiarem jest, aby trudno było odgadnąć identyfikatory klientów, a następnie użyć uuids, na przykład 32 hex postać długiego guids takich jak 21EC2020-3AEA-1069-A2DD-08002B30309D.

Identyfikacja podmiotów w domenie zależy całkowicie od implementacji, która zapewnia usługę REST.

Niektóre aplikacje używają domyślnie identyfikatorów do identyfikowania elementów. Dobrym przykładem jest na przykład lovefilm API:

GET /users/9D48675C-096F-11DC-BF5A-88D01745CE5C HTTP/1.1 
Host: openapi.lovefilm.com 

Jednak używanie trudnych do odgadnięcia identyfikatorów nie chroni przed nieautoryzowanym dostępem i nie jest zamiennikiem dla prawdziwego mechanizmu uwierzytelniania.

+0

hum, więc jeśli biorę twoją odpowiedź i próbuję zastosować to do mojego pytania, masz na myśli używanie tabeli do śledzenia współzależności między hasłem, identyfikatorem GUID lub czymkolwiek i rzeczywistym zasobem? – silkAdmin

+0

To zależy od tego, jak aplikacja przechowuje zasób. Nie mam pojęcia, jak wygląda zasób wewnątrz aplikacji. Ale tak, jeśli musisz wewnętrznie trzymać się liczb całkowitych, wtedy dodaj kolejną właściwość guid do swojego modelu klienta. Jeśli twoja pamięć jest tabelą SQL DB, to przechowuj ją w dodatkowym polu tabeli klienta. – stmllr

+0

, aby przywrócić nas do pytania o "dobrą praktykę", myślę, że chodzi o to, że powinienem indeksować UUID w samej tabeli zasobów? – silkAdmin

Powiązane problemy