Возможное дублирование:
написание веб-приложений «без сервера»
Итак, допустим, я собираюсь создать клон Stack Exchange и решил использовать что-то вроде CouchDB в качестве своего внутреннего хранилища. Если я использую их встроенную аутентификацию и авторизацию на уровне базы данных, есть ли какая-либо причина не разрешать клиентскому Javascript писать напрямую на общедоступный сервер CouchDB? Так как это в основном приложение CRUD, а бизнес-логика состоит из «Только автор может редактировать свою публикацию», я не вижу особой необходимости иметь слой между клиентской частью и базой данных. Я бы просто использовал проверку на стороне CouchDB, чтобы удостовериться, что кто-то не вставляет мусорные данные, и убедиться, что разрешения установлены правильно, так что пользователи могут только читать свои собственные данные _user. Рендеринг будет выполняться на стороне клиента чем-то вроде AngularJS. По сути, вы могли бы просто иметь сервер CouchDB и кучу «статических» страниц, и все готово. Вам не понадобится какая-либо обработка на стороне сервера, только то, что может обслуживать HTML-страницы.
Открытие моей базы данных для всего мира кажется неправильным, но в этом сценарии я не могу понять, почему, если разрешения установлены правильно. Это противоречит моему инстинкту веб-разработчика, но я не могу придумать вескую причину. Итак, почему это плохая идея?
РЕДАКТИРОВАТЬ: Похоже, что есть подобное обсуждение здесь: написание веб-приложений "без сервера"
РЕДАКТИРОВАТЬ: Потрясающее обсуждение до сих пор, и я ценю все отзывы! Я чувствую, что должен добавить несколько общих предположений вместо того, чтобы специально вызывать CouchDB и AngularJS. Итак, давайте предположим, что:
- База данных может аутентифицировать пользователей прямо из своего скрытого хранилища
- Вся связь с базой данных будет происходить через SSL
- Проверка данных может (но, возможно, не должна?) Обрабатываться базой данных.
- Единственная авторизация, о которой мы заботимся, кроме функций администратора, это то, что кому-то разрешено редактировать только свой пост.
- Мы прекрасно понимаем, что каждый может прочитать все данные (КРОМЕ пользовательских записей, которые могут содержать хэши паролей)
- Административные функции будут ограничены авторизацией базы данных
- Никто не может добавить себя в роль администратора
- База данных относительно легко масштабируется
- Практической бизнес-логики практически нет; это базовое приложение CRUD
DELETE FROM ImportantData;