W mojej edukacji powiedziano mi, że wadliwym pomysłem jest udostępnianie użytkownikowi rzeczywistych kluczy podstawowych (nie tylko kluczy DB, ale wszystkich głównych akcesorów).
Zawsze myślałem, że to problem z bezpieczeństwem (ponieważ osoba atakująca może próbować czytać rzeczy, które nie są ich własnością).
Teraz muszę sprawdzić, czy użytkownik może mimo to uzyskać dostęp, więc czy kryje się za tym inny powód?
Ponadto, ponieważ moi użytkownicy i tak muszą uzyskać dostęp do danych, muszę mieć gdzieś pomiędzy nimi klucz publiczny dla świata zewnętrznego. Teraz, gdy klucz publiczny ma takie same problemy jak klucz podstawowy, prawda?
W każdym razie pojawiła się prośba o przykład, dlaczego to zrobić, więc oto jeden. Należy pamiętać, że pytanie ma dotyczyć samej zasady, nie tylko jeśli ma zastosowanie w tym przykładzie. Odpowiedzi dotyczące innych sytuacji są wyraźnie mile widziane.
Aplikacja (internetowa, mobilna), która obsługuje aktywność, ma wiele interfejsów użytkownika i co najmniej jeden automatyczny interfejs API do komunikacji międzysystemowej (np. Dział księgowości chce wiedzieć, ile obciążyć klienta na podstawie tego, co zostało zrobione). Aplikacja ma wielu klientów, więc oddzielenie ich danych (logicznie dane są przechowywane w tej samej bazie danych) jest obowiązkowym elementem systemu. Każde żądanie zostanie sprawdzone pod kątem ważności bez względu na wszystko.
Aktywność jest bardzo szczegółowa, dlatego jest połączona w jakimś obiekcie kontenerowym, nazwijmy to „Zadaniem”.
Trzy przypadki użycia:
- Użytkownik A chce wysłać użytkownika B do jakiegoś Zadania, więc wysyła mu link (HTTP), aby wykonać tam Aktywność.
- Użytkownik B musi wyjść na zewnątrz budynku, aby otworzyć zadanie na swoim urządzeniu mobilnym.
- Księgowość chce obciążyć klienta za zadanie, ale korzysta z zewnętrznego systemu księgowego, który automatycznie ładuje zadanie / działanie za pomocą kodu odnoszącego się do interfejsu API REST aplikacji
Każda z przypadków użycia wymaga (lub staje się łatwiejsza, jeśli) agenta, aby mieć adresowalny identyfikator dla zadania i działania.
ON UPDATE CASCADE
został stworzony do tego (specyficzny dla mysql?), chociaż jeśli problemem jest bezpieczeństwo, to kontrola dostępu powinna znajdować się na