重複の可能性:
Web「サーバーレス」アプリケーションの作成
そこで、Stack Exchangeクローンを構築し、CouchDBのようなものをバックエンドストアとして使用することにしたとしましょう。組み込みの認証とデータベースレベルの承認を使用する場合、クライアント側のJavaScriptが公開されているCouchDBサーバーに直接書き込むことを許可しない理由はありますか?これは基本的にCRUDアプリケーションであり、ビジネスロジックは「投稿者のみが投稿を編集できる」で構成されているため、クライアント側のものとデータベースの間にレイヤーを配置する必要はほとんどありません。CouchDB側で検証を使用して、誰かがガベージデータを入れていないことを確認し、ユーザーが自分の_userデータしか読み取れないようにアクセス許可が適切に設定されていることを確認します。レンダリングは、AngularJSのようなものによってクライアント側で行われます。本質的には、CouchDBサーバーと多数の「静的」ページを用意するだけで十分です。サーバー側の処理は一切必要なく、HTMLページを提供できるものだけが必要です。
データベースを世界中に公開するのは間違っているように見えますが、このシナリオでは、アクセス許可が適切に設定されている限り、その理由を考えることはできません。Web開発者としての私の本能に反しますが、正当な理由は考えられません。それで、なぜこれは悪い考えですか?
編集:同様の議論がここにあるように見えます:Web「サーバーレス」アプリケーションの作成
編集:これまでのところ素晴らしい議論、そして私は皆のフィードバックに感謝します!CouchDBとAngularJSを具体的に呼び出す代わりに、いくつかの一般的な仮定を追加する必要があるように感じます。だからそれを仮定しましょう:
- データベースは、非表示のストアからユーザーを直接認証できます。
- すべてのデータベース通信はSSL経由で行われます
- データ検証をすることができます(多分?べきではありません)データベースによって処理され
- 管理機能以外に私たちが気にする唯一の承認は、自分の投稿の編集のみが許可されている人
- 誰でもすべてのデータを読み取ることができます(パスワードハッシュを含む可能性があるユーザーレコードを除く)
- 管理機能は、データベース認証によって制限されます
- 誰も管理者ロールに自分を追加できません
- データベースは比較的簡単に拡張できます
- 真のビジネスロジックはほとんどありません。これは基本的なCRUDアプリです
DELETE FROM ImportantData;