Можливий дублікат:
написання веб-додатків "менше сервера"
Отже, скажімо, я збираюся створити клон Stack Exchange і вирішую використовувати щось на зразок CouchDB в якості свого бекенда. Якщо я використовую їх вбудовану аутентифікацію та авторизацію на рівні бази даних, чи є якась причина не дозволити клієнтові Javascript писати безпосередньо на загальнодоступному сервері CouchDB? Оскільки це в основному додаток CRUD, а бізнес-логіка складається з "Тільки автор може редагувати свою публікацію", я не бачу великої необхідності мати шар між матеріалами на стороні клієнта та базою даних. Я просто використовував би валідацію на стороні CouchDB, щоб переконатися, що хтось не вводить дані про сміття, і переконатися, що дозволи встановлені належним чином, щоб користувачі могли читати лише свої власні дані користувача. Відображення здійснюватиметься на стороні клієнта чимось на зразок AngularJS. По суті, ви могли просто мати CouchDB-сервер і купу "статичних" сторінок, і ви готові йти. Вам не знадобиться будь-яка обробка на стороні сервера, лише те, що може обслуговувати HTML-сторінки.
Відкриття моєї бази даних у світі здається неправильним, але в цьому сценарії я не можу придумати, чому дозволу встановлено належним чином. Це суперечить моєму інстинкту як веб-розробника, але я не можу думати про вагомі причини. Отже, чому це погана ідея?
EDIT: Схоже, тут є подібна дискусія: Написання веб-додатків "менше сервера"
EDIT: Поки що дивовижна дискусія, і я ціную відгуки всіх! Я відчуваю, що мені слід додати кілька загальних припущень, а не викликувати CouchDB та AngularJS спеціально. Тож припустимо, що:
- База даних може автентифікувати користувачів безпосередньо зі свого прихованого сховища
- Весь зв’язок із базою даних відбуватиметься через SSL
- Перевірка даних може (але може бути, не слід) обробляти базу даних
- Єдиний дозвіл, який нас цікавить, окрім функцій адміністратора, - це те, хто має право редагувати власну публікацію
- Ми прекрасно вписуємось у те, що кожен може прочитати всі дані (ОКРИМИ записи користувачів, які можуть містити хеші паролів)
- Адміністративні функції обмежуватимуться авторизацією бази даних
- Ніхто не може додати себе до ролі адміністратора
- База даних порівняно легко масштабувати
- Справжньої логіки бізнесу майже немає; це базовий додаток CRUD
DELETE FROM ImportantData;