Posible duplicado:
escritura de aplicaciones web "sin servidor"
Entonces, digamos que voy a construir un clon de Stack Exchange y decido usar algo como CouchDB como mi tienda de back-end. Si utilizo su autenticación integrada y autorización a nivel de base de datos, ¿hay alguna razón para no permitir que el Javascript del lado del cliente escriba directamente en el servidor CouchDB disponible públicamente? Dado que esta es básicamente una aplicación CRUD y la lógica de negocios consiste en "Solo el autor puede editar su publicación". No veo mucha necesidad de tener una capa entre las cosas del lado del cliente y la base de datos. Simplemente usaría la validación en el lado CouchDB para asegurarme de que alguien no esté ingresando datos basura y asegúrese de que los permisos estén configurados correctamente para que los usuarios solo puedan leer sus propios datos de usuario. El renderizado se haría del lado del cliente por algo como AngularJS. En esencia, podría tener un servidor CouchDB y un montón de páginas "estáticas" y listo. No necesitaría ningún tipo de procesamiento del lado del servidor, solo algo que pudiera servir las páginas HTML.
Abrir mi base de datos al mundo parece incorrecto, pero en este escenario no puedo pensar por qué mientras los permisos estén configurados correctamente. Va en contra de mi instinto como desarrollador web, pero no puedo pensar en una buena razón. Entonces, ¿por qué es una mala idea?
EDITAR: Parece que hay una discusión similar aquí: escribir aplicaciones web "sin servidor"
EDITAR: ¡Increíble discusión hasta ahora, y agradezco los comentarios de todos! Siento que debería agregar algunas suposiciones genéricas en lugar de llamar específicamente a CouchDB y AngularJS. Entonces supongamos que:
- La base de datos puede autenticar usuarios directamente desde su tienda oculta
- Toda la comunicación de la base de datos se realizará a través de SSL
- La validación de datos puede (pero quizás no debería) ser manejada por la base de datos
- La única autorización que nos importa aparte de las funciones administrativas es que a alguien solo se le permita editar su propia publicación
- Estamos perfectamente de acuerdo con que todos puedan leer todos los datos (EXCEPTO los registros de usuarios que pueden contener hashes de contraseñas)
- Las funciones administrativas estarían restringidas por la autorización de la base de datos.
- Nadie puede agregarse a un rol de administrador
- La base de datos es relativamente fácil de escalar
- Hay poca o ninguna lógica comercial verdadera; esta es una aplicación CRUD básica
DELETE FROM ImportantData;