Dupliquer possible:
Écrire des applications Web «sans serveur»
Donc, disons que je vais construire un clone Stack Exchange et que je décide d'utiliser quelque chose comme CouchDB comme magasin backend. Si j'utilise leur authentification intégrée et leur autorisation au niveau de la base de données, y a-t-il une raison de ne pas autoriser le code Javascript côté client à écrire directement sur le serveur CouchDB disponible au public? Puisqu'il s'agit en gros d'une application CRUD et que la logique métier est constituée de "Seul l'auteur peut éditer son message", je ne vois pas vraiment la nécessité de disposer d'une couche entre le contenu côté client et la base de données. J'utiliserais simplement la validation du côté de CouchDB pour m'assurer que quelqu'un ne met pas de données erronées et que les autorisations sont définies correctement pour que les utilisateurs ne puissent lire que leurs propres données _user. Le rendu se ferait côté client avec quelque chose comme AngularJS. En substance, vous pouvez simplement avoir un serveur CouchDB et un tas de pages "statiques" et vous êtes prêt à partir. Vous n'avez besoin d'aucun type de traitement côté serveur, mais simplement de quelque chose qui pourrait servir les pages HTML.
Ouvrir ma base de données sur le monde semble faux, mais dans ce scénario, je ne vois pas pourquoi tant que les autorisations sont correctement définies. Cela va à l’encontre de mon instinct de développeur Web, mais je ne vois pas de bonne raison. Alors, pourquoi est-ce une mauvaise idée?
EDIT: On dirait qu'il y a une discussion similaire ici: Écrire des applications Web "sans serveur"
EDIT: Super discussion jusqu'à présent, et j'apprécie les commentaires de chacun! Je pense que je devrais ajouter quelques hypothèses génériques au lieu d'appeler spécifiquement CouchDB et AngularJS. Supposons donc que:
- La base de données peut authentifier les utilisateurs directement à partir de son magasin caché
- Toutes les communications de base de données auraient lieu via SSL
- La validation des données peut (mais ne devrait peut-être pas?) Être gérée par la base de données
- La seule autorisation qui nous importe, à part les fonctions d'administration, est que quelqu'un soit autorisé à modifier son propre message.
- Tout le monde peut lire toutes les données (SAUF les enregistrements d’utilisateur pouvant contenir des mots de passe hachés).
- Les fonctions administratives seraient restreintes par une autorisation de base de données
- Personne ne peut s'ajouter à un rôle d'administrateur
- La base de données est relativement facile à mettre à l'échelle
- Il y a peu ou pas de vraie logique métier; Ceci est une application de base CRUD
DELETE FROM ImportantData;