Bazy danych w aplikacjach mobilnych

0

W jaki sposób podejść do tematu przesyłania danych z aplikacji mobilnej do bazy danych? Chodzi o jedną wspólną bazę dla wszystkich aplikacji.
W przypadku zwykłych aplikacji tworzy się jakiś RESTowy serwis będący API do bazy. Nie wiem jednak czy to właściwe podejście, bo taki serwis byłby wtedy dostępny również z przeglądarek, a chodzi o to by zapis do bazy mógł odbywać się wyłącznie z danej aplikacji. Jak to wygląda np. w grach na telefony, które logują wyniki użytkowników do bazy? Czy po prostu aplikacje bezpośrednio logują się do bazy?

3

Czy po prostu aplikacje bezpośrednio logują się do bazy?

Moim zdaniem to wystawienie bazy prosto na świat jest proszeniem się o duże problemy. Zresztą - dlatego wymyślono takie rzeczy jak jakieś API czy REST - żeby właśnie wprowadzić jakaś warstwę pośredniczącą.

Ja bym raczej obstawiał za jakimś restem, ale z zabezpieczeniem dostępu - chociażby coś w stylu https://stackoverflow.com/questions/8562223/password-protecting-a-rest-service. Zresztą - z punktu widzenia programisty, to taki REST nam załatwia temat - bo jeśli masz dostęp z kilku stron - np. przeglądarka i apka mobilna, to są szanse, że jak dobrze to zrobisz, to jeden serwer REST ogarnie Ci oba typy klientów. Po prostu - REST skupi się na danych, a ich prezentacja już będzie leżeć po stronie apki klienckiej.

0

Nie wiem jednak czy to właściwe podejście, bo taki serwis byłby wtedy dostępny również z przeglądarek, a chodzi o to by zapis do bazy mógł odbywać się wyłącznie z danej aplikacji.

Serwis musi być publiczny aby apka mogła go wywoływać. Jeżeli zestawisz apke bezpośrednio łącząc się z bazą to nie znaczy, że apka będzie miała ją na wyłączność ktoś może sobie odpalić klienta do bazy i to ominąć równie dobrze jak może sobie odpalić Postmana i wołać api restowe.

Poza tym rozwiązanie, w którym apka ma dostęp bezpośrednio do bazy ma problem z uprawnieniami bo użytkownicy mogliby manipulować danymi jak im się podoba bo nie byłoby żadnej walidacji.

Jak to wygląda np. w grach na telefony, które logują wyniki użytkowników do bazy? Czy po prostu aplikacje bezpośrednio logują się do bazy?

Wołają jakieś api. Musi być jakaś warstwa pośrednicząca, która ogarnie domene i logikę biznesową rozwiązania.

0
lookacode1 napisał(a):

Nie wiem jednak czy to właściwe podejście, bo taki serwis byłby wtedy dostępny również z przeglądarek, a chodzi o to by zapis do bazy mógł odbywać się wyłącznie z danej aplikacji.

Serwis musi być publiczny aby apka mogła go wywoływać. Jeżeli zestawisz apke bezpośrednio łącząc się z bazą to nie znaczy, że apka będzie miała ją na wyłączność ktoś może sobie odpalić klienta do bazy i to ominąć równie dobrze jak może sobie odpalić Postmana i wołać api restowe.

Chodzi mi o to, że bezpośredni dostęp do bazy musi być autoryzowany, klient musi znać hasło. Tymczasem z publicznego serwisu RESTowego może skorzystać każdy. @cerrato zasugerował zabezpieczenie serwisu hasłem. Wydaje się to sensowne. Chciałbym tylko wiedzieć czy to jest standardowa praktyka.

Poza tym rozwiązanie, w którym apka ma dostęp bezpośrednio do bazy ma problem z uprawnieniami bo użytkownicy mogliby manipulować danymi jak im się podoba bo nie byłoby żadnej walidacji.

Jak dla mnie jest odwrotnie - połączenie z bazą wymaga przecież walidacji, a serwisem nie.

2

Rzuć okiem na https://www.netsparker.com/blog/web-security/rest-api-web-service-security/.

Równie dobrze możesz wymusi logowanie, przy którym prześlesz jakiś token i później wszystkie REST'y bez ważnego tokena będą odrzucane, a dodatkowo możesz w ten sposób limitować zakres uprawnień - np. ten token może tylko pobierać określone dane, ale nie ma praw zapisu itp.

0

@GutekSan: Nie wymyślaj problemów. Baza musiałaby być tak samo publicznie dostępna jak REST API.

Chodzi mi o to, że bezpośredni dostęp do bazy musi być autoryzowany, klient musi znać hasło. Tymczasem z publicznego serwisu RESTowego może skorzystać każdy. @cerrato zasugerował zabezpieczenie serwisu hasłem. Wydaje się to sensowne. Chciałbym tylko wiedzieć czy to jest standardowa praktyka.

Tak. Prawie wszystkie aplikacje internetowe na świecie tak działają, że są publicznie dostępne i wymagają hasła (lub czegoś podobnego), więc chyb można to nazwać standardową praktyką. Nie sądzisz?

Jak dla mnie jest odwrotnie - połączenie z bazą wymaga przecież walidacji, a serwisem nie.

To kup coś na Allegro bez, jak to nazywasz, "walidacji".

0
jacek.placek napisał(a):

@GutekSan: Nie wymyślaj problemów. Baza musiałaby być tak samo publicznie dostępna jak REST API.

Uważasz, że brak walidacji to "wymyślony problem"?
Przecież nie chodzi o to że baza ma nie być publicznie dostępna, tylko o to, że dostęp do bazy jest zabezpieczony, a do serwisów restowych niekoniecznie.

Tak. Prawie wszystkie aplikacje internetowe na świecie tak działają, że są publicznie dostępne i wymagają hasła (lub czegoś podobnego), więc chyb można to nazwać standardową praktyką. Nie sądzisz?

Nie wiem. Po to się pytam.

Jak dla mnie jest odwrotnie - połączenie z bazą wymaga przecież walidacji, a serwisem nie.

To kup coś na Allegro bez, jak to nazywasz, "walidacji".

Argument bez sensu. Allegro to nie jest zwykly serwis restowy, do którego sobie po prostu wrzucasz requesty. Ma wbudowane mechanizmy autentykacji.

0

No to Twój rest api też musi mieć wbudowane mechanizmy autentykacji. Jak prawie wszystkie komercyjne rest api na świecie.

Niepotrzebnie ciagniesz ten temat.
Powinno być REST APi na SSL z uwierzytelnianiem i autoryzacją. Koniec.

1 użytkowników online, w tym zalogowanych: 0, gości: 1