Nie mam dużego doświadczenia z aplikacjami komputerowymi, ale gdybym musiał utworzyć aplikację kliencką na serwerze, dostęp do danych byłby możliwy za pośrednictwem usługi internetowej. Wierzę, że dostęp do danych za pośrednictwem usługi sieciowej zapewnia bezpieczeństwo - nie muszę podawać nazwy użytkownika i hasła serwera db itp.
Jak to zrobiły aplikacje baz danych przed usługami internetowymi? Czy wszystkie ważne informacje dotyczące bazy danych zostały przekazane podczas instalacji aplikacji komputerowej? Jeśli tak, to w jaki sposób programiści zarządzali aspektem bezpieczeństwa? A może programiści używali czegoś podobnego do usług sieciowych?
programming-practices
security
Wycie Hagrid
źródło
źródło
Odpowiedzi:
W zależności od tego, co nazywacie usługą internetową.
Przed WSDL i REST wciąż istniał HTTP, więc w zasadzie wszystko, co możesz teraz zrobić, można było zrobić wcześniej.
Brakowało jednolitości (dlatego przede wszystkim stworzono WSDL i REST), ale zapewniło ten sam poziom poufności i bezpieczeństwa danych, o którym mówisz.
W rzeczywistości możesz także uniknąć używania HTTP: możesz sporządzić własny protokół i użyć niestandardowego serwera i niestandardowych klientów, które otworzą gniazdo na tym serwerze i uzyskają potrzebne dane (lub opublikują dane). W tym przypadku tracisz wszystkie korzyści związane ze standaryzacją protokołu HTTP, ale ponownie nie dajesz dostępu do bazy danych klientom.
źródło
Ach, kiedy mieliśmy patyki i kamienie.
Przed Internetem mieliśmy coś, co nazywało się architekturą „klient / serwer” i sieciami lokalnymi. Jeśli nie próbujesz nawiązać połączenia z serwerem oddalonym o kilka mil, te sieci działały idealnie, aby osiągnąć większość celów. Możesz nawet ustalić litery dysków i użyć połączeń z serwerami plików, takimi jak zdalny dysk twardy, jeśli chcesz. Gdybyś był w odległości kilku mil, możesz użyć sieci rozległej, aby zrobić zasadniczo to samo, choć z mniejszą prędkością i większym kosztem.
Tani sposób na rozmowę zdalną polegał na przekazywaniu informacji między liniami telefonicznymi za pomocą urządzeń zwanych modemami, a jeśli chciałeś zmontować coś, w którym dwa komputery rozmawiały ze sobą za pomocą aplikacji komputerowych, zrobiłeś to w taki sam sposób, jak dzisiaj: ustanawiając protokół komunikacyjny. Nie ma w tym nic magicznego; obie strony muszą uzgodnić, co oznaczają wszystkie bajty.
Od bardzo wczesnych etapów Internetu istniały sposoby komunikacji między nimi. Usługi sieciowe to tylko najnowszy smak tygodnia.
źródło
Najpierw wyjaśnię kilka pojęć ...
Myślę, że łączysz koncepcje (1) zabezpieczeń warstwy transportowej (TLS) i (2) kontroli dostępu w powyższym zestawieniu ... To, czy nazwa użytkownika i hasło muszą zostać dostarczone, czy nie, nie ma związku z tym, czy usługa internetowa jest zapewniane przez (1) szyfrowany kanał i (2) uwierzytelnianie (np. klucz API).
Niezwykle źle napisana usługa internetowa może nadal wymagać wysyłania haseł w postaci zwykłego tekstu przez HTTP. Źle napisany może to zrobić za pomocą HTTPS (bezpieczny, ale raz złamany, np. Przez atak man-in-the-middle , otwarty na nadużycia). Lepiej napisana usługa internetowa powinna wewnętrznie obsługiwać połączenia z bazą danych na podstawie innych danych wejściowych, np. Identyfikatorów sesji, po sprawdzeniu autentyczności i kontroli uprawnień.
Wracając do głównego tematu, komentarz @ marcus do twojego pytania jest w gruncie rzeczy tym. Aspekty bezpieczeństwa nie są traktowane inaczej niż „nowoczesne” technologie, które obejmują kwestie związane z wdrożeniem, takie jak:
X.X.X.X
za pomocą nazwy użytkownika i hasła, a następnie uruchomić zapytanieINSERT INTO user_address ...
?Po więcej informacji:
źródło