Możliwa duplikat:
pisanie internetowych aplikacji „bez serwera”
Powiedzmy, że zbuduję klon Stack Exchange i zdecyduję się użyć czegoś takiego jak CouchDB jako mojego sklepu z zapleczem. Jeśli korzystam z wbudowanego uwierzytelniania i autoryzacji na poziomie bazy danych, to czy jest jakiś powód, aby nie pozwalać skryptowi JavaScript po stronie klienta pisać bezpośrednio na publicznie dostępnym serwerze CouchDB? Ponieważ jest to w zasadzie aplikacja CRUD, a logika biznesowa polega na tym, że „tylko autor może edytować swój post”, nie widzę potrzeby posiadania warstwy między elementami po stronie klienta a bazą danych. Po prostu użyłbym sprawdzania poprawności po stronie CouchDB, aby upewnić się, że ktoś nie wprowadza śmieciowych danych i upewnić się, że uprawnienia są ustawione poprawnie, aby użytkownicy mogli czytać tylko własne dane użytkownika. Renderowanie byłoby wykonywane po stronie klienta przez coś takiego jak AngularJS. W gruncie rzeczy możesz mieć serwer CouchDB i kilka „statycznych” stron i możesz zacząć. Nie potrzebujesz żadnego przetwarzania po stronie serwera, tylko coś, co mogłoby obsłużyć strony HTML.
Otwarcie mojej bazy danych na świat wydaje się niewłaściwe, ale w tym scenariuszu nie mogę wymyślić, dlaczego, dopóki uprawnienia są ustawione poprawnie. Jest to sprzeczne z moim instynktem jako programisty stron internetowych, ale nie mam dobrego powodu. Dlaczego to zły pomysł?
EDYCJA: Wygląda na to, że jest tutaj podobna dyskusja: Pisanie aplikacji internetowych „bez serwera”
EDYCJA: Jak dotąd niesamowita dyskusja i doceniam opinie wszystkich! Wydaje mi się, że powinienem dodać kilka ogólnych założeń zamiast wzywać CouchDB i AngularJS. Załóżmy więc, że:
- Baza danych może uwierzytelniać użytkowników bezpośrednio z ukrytego sklepu
- Cała komunikacja z bazą danych odbywa się za pośrednictwem protokołu SSL
- Sprawdzanie poprawności danych może (ale może nie powinno?) Być obsługiwane przez bazę danych
- Jedyną autoryzacją, na której nam zależy, poza funkcjami administracyjnymi, jest możliwość edytowania własnego postu
- Nie ma problemu, że każdy może odczytać wszystkie dane (Z WYJĄTKIEM rekordów użytkowników, które mogą zawierać skróty haseł)
- Funkcje administracyjne byłyby ograniczone przez autoryzację bazy danych
- Nikt nie może dodać się do roli administratora
- Baza danych jest stosunkowo łatwa do skalowania
- Prawdziwa logika biznesowa jest niewielka lub żadna; jest to podstawowa aplikacja CRUD
DELETE FROM ImportantData;