Wpis z mikrobloga

Jak najlepiej wg was ustawić sciezki na backendzi by dostać sie do danych po id jak i po slugu. Mam dwa pomysły

/post/:id
/post/slug/:slug
albo

/post?slug=slug
przy czym druga opcja musiała by wyrzucać info że nie podano query, co wy o tym myślicie?

#programowanie
  • 23
@xLibero: lol xD nie wiem czy zwiększę bezpieczeństwo bo nie wiem jak wygląda system OPa - czy stosuje jakieś rolę, autentykacje, czy idki są sekwencyjne czy to uuid/guid, czy API idzie w świat (bo to że to dla panelu administracyjnego, nic nie znaczy). No ogółem widzę takie coś to zwracam uwagę bo skoro gość się przejmuje tym jak ma id wsadzone w URL to chyba tym bardziej powinien na takie rzeczy
@wiesiu2: Jeżeli masz zwykły INT jako id to bez dodatkowej walidacji w formie uwierzytelniania, zgadując id możesz uzyskać dostęp do rekordu do którego nie powinieneś mieć. W przypadku GUID już jest trudniej żeby go zgadnąć.

Po drugie to możemy wyróżnić dwa rodzaje identyfikatorów: biznesowe i techniczne. Biznesowym będzie np. PESEL, NR_ZAMOWIENIA a technicznym PK z bazy. W zależności od wymagań, możemy chcieć reprezentować zasób i udostępniać operacje na nim po id
@markaron: Jedną z takich zalet ukrywania id technicznego jest agnostyczność względem tego co jest moim id. Wtedy zmiana bazy z SQL Server gdzie korzystam z GUIDa/INTa jako PK na takie MongoDB odbywa się transparentnie dla klientów API. Jeżeli wystawiłbym techniczne id w API to klienty API mają problem.
@powaznyczlowiek: ale tu przecież chodzi o to, że wystawiamy idiki i ich nie chronimy dostępem, a nie że są po prostu wystawione. Nawet masz wprost napisane, że wystawianie id publicznie jest częste

Applications frequently use the actual name or key of an object when generating web pages. Applications don’t always verify the user is authorized for the target object. This results in an insecure direct object reference flaw.
@powaznyczlowiek: Chłopie piszesz najpierw że wystawianie id z mongo to zła praktyka potem twierdzisz że jest to powiązane z bezpieczeństwem a na końcu piszesz że nie wiesz czy zwiększy to bezpieczeństwo? XD Pls stop it!
A co do linka który podałeś to jasna sprawa że zasób który wystawiamy o ile nie jest to jakiś publicznie dostępny wymaga żeby klient pytający o niego był uwierzetelniony ale w tym przypadku rozmawiamy o slugach
@powaznyczlowiek: teraz mi powiedz jak swoje systemy zabezpieczasz, zgodnie z radami z linka masz ID pobieranego obiektu unikalne dla każdej sesji czy zalogowanego usera? Czy tylko dostęp do obiektu sprawdzasz na podstawie sesji zalogowanego usera?

@markaron: używanie autoinkrementowanego ID w systemach w których można w ten sposób pobierać rekordy faktycznie jest durne, ale to nie do końca jest odpowiedź na to pytanie.