Ogólnie chyba nie ma wątpliwości, że serwer powinien sprawdzać/weryfikować dane otrzymane z frontu - bo ich źródło jest niepewne, mogły zostać sfałszowane przez użytkownika itp. Także zasada (z grubsza i ogólna) jest taka, że wstępna weryfikacja danych jest jeszcze po stronie klienta (czy to jest apka desktopowa, web czy np. mobilna), potem to leci na serwer i tam i tak ponownie dane są sprawdzane przed wrzuceniem ich do bazy czy wykonaniem innych czynności. Po prostu - nie ufamy temu, co dostaniemy z frontu/od klienta.
A co w odwrotnej sytuacji? Miałem parę dni temu rozmowę z kumplem i mieliśmy różnicę zdań. Jeden twierdził, że jak coś przyszło z serwera to jest to na 99,99% OK i nie ma co tracić czasu na weryfikację, natomiast drugi że sprawdzić nic nie szkodzi.
Nie będę opisywać naszego konkretnego przypadku, ale wyjaśnię to na 2 przykładach:
- apka do zarządzania serwisem (coś powiedzmy w stylu CRM). Masz różne rodzaje zgłoszeń: naprawa, montaż, gwarancja, oferta itp. Jest sobie serwisant Mieciu, który tylko zajmuje się naprawami. Jeśli serwer, przesyłając mu listę zadań na dzisiaj, przez pomyłkę prześle także zadanie dot. sporządzenia oferty, to apka kliencka po typie zlecenia może przefiltrować takie coś i nie wyświetlić tego typu zgłoszenia
- apka dla firm (np. jakiś system ticketowy). Grażynka jest pracownikiem firmy o ID=352, ale serwer miał buga w logice i przesłał jej także zlecenia firm o ID od 200 do 400. Jeśli front wypluje wszystko, co dostanie od serwera, to Grażynka zobaczy także tickety innych firm. Ale w przypadku sprawdzenia danych z serwera, jeśli apka zweryfikuje ID danej firmy to może ukryć dane nie przeznaczone dla tego użytkownika, które trafiły do klienta w ramach błędu.
Zaznaczam - takie sprawdzanie danych na froncie nie ma na celu ochrony przed atakami czy celowym działaniem użytkownika (który np. podmieni sobie w konsoli czy jakimś postmanie nagłówki czy ID zdarzenia/wpisu do bazy), a jedynie ma być taką drugą linią obrony w przypadku, jakby powstał jakiś błąd po stronie serwera, który spowoduje przesłanie danych na front, które nie powinny tam trafić.
Co sądzicie? Które podejście popieracie - pokazywać wszystko co dotarło, czy jeszcze filtrować/sprawdzać na froncie/w apce?
