Possibile duplicato:
scrittura di applicazioni Web "server less"
Quindi, supponiamo che costruirò un clone di Stack Exchange e deciderò di utilizzare qualcosa come CouchDB come archivio back-end. Se utilizzo l'autenticazione integrata e l'autorizzazione a livello di database, c'è qualche motivo per non consentire al Javascript lato client di scrivere direttamente sul server CouchDB pubblicamente disponibile? Dato che si tratta fondamentalmente di un'applicazione CRUD e la logica aziendale consiste in "Solo l'autore può modificare il proprio post" Non vedo molto il bisogno di avere un livello tra il lato client e il database. Vorrei semplicemente utilizzare la convalida sul lato CouchDB per assicurarmi che qualcuno non stia inserendo i dati spazzatura e assicurarmi che le autorizzazioni siano impostate correttamente in modo che gli utenti possano solo leggere i propri dati _user. Il rendering verrebbe eseguito sul lato client da qualcosa come AngularJS. In sostanza potresti semplicemente avere un server CouchDB e un mucchio di pagine "statiche" e sei a posto. Non avresti bisogno di alcun tipo di elaborazione sul lato server, solo qualcosa che potrebbe servire le pagine HTML.
L'apertura del mio database al mondo sembra sbagliata, ma in questo scenario non riesco a pensare al motivo fino a quando le autorizzazioni sono impostate correttamente. Va contro il mio istinto di sviluppatore web, ma non riesco a pensare a una buona ragione. Quindi, perché questa è una cattiva idea?
EDIT: Sembra che ci sia una discussione simile qui: Scrivere applicazioni Web "server less"
EDIT: Discussione fantastica finora, e apprezzo il feedback di tutti! Sento che dovrei aggiungere alcune ipotesi generiche invece di chiamare specificamente CouchDB e AngularJS. Quindi supponiamo che:
- Il database può autenticare gli utenti direttamente dal suo archivio nascosto
- Tutte le comunicazioni del database avverrebbero tramite SSL
- La convalida dei dati può (ma forse non dovrebbe?) Essere gestita dal database
- L'unica autorizzazione che ci interessa oltre alle funzioni di amministrazione è che a qualcuno è permesso solo modificare il proprio post
- Stiamo perfettamente bene con chiunque sia in grado di leggere tutti i dati (TRANNE i record degli utenti che possono contenere hash delle password)
- Le funzioni amministrative sarebbero limitate dall'autorizzazione del database
- Nessuno può aggiungersi a un ruolo di amministratore
- Il database è relativamente facile da ridimensionare
- C'è poca o nessuna vera logica aziendale; questa è un'app CRUD di base
DELETE FROM ImportantData;