【Bubble】セキュリティガイド
概要
Bubbleは、インターネット上で利用できるWebアプリケーションを作成できるプラットフォームで、多くの人々が利用できます。
その一方で、情報漏洩や、不正アクセスが行われたりする可能性があります。それらを防ぐために、セキュリティが必要です。
本記事では、Bubble開発者であれば知っておくべき、Bubbleのセキュリティ対策を網羅的に解説していきます。
▼Bubbleのセキュリティに関する基本的な知識・原則についてはこちらの記事で紹介しています
クライアントとサーバーとは
クライアントとサーバーの概要
セキュリティ対策を行うために、コンピュータがどのように通信されているのか知ることが重要です。
クライアントとサーバーは、コンピュータネットワークにおいて、通信するための2つのシステムです。
- クライアントは、サーバーにアクセスし、サービスやデータを要求する側のシステムです。
- サーバーは、クライアントからの要求に対して、必要なサービスやデータを提供する側のシステムです。
クライアントとサーバーは、通信プロトコルを使用して通信します。
クライアントに存在する全てのデータは公開されている
クライアントに存在する全てのデータは、公開されていることに気をつけることが必要です。
- ページ内の要素を非表示にして隠しても、システムに詳しい人であれば見ることや書き換えることが可能
上記を防ぐために、以下のような対策が考えられます。
- 公開したくないデータはクライアントにダウンロードしない
- フロントエンド上のデータ(例:Group’s User’s Nama)を重要なワークフローで使用しない
ハンズオン演習
以下の例で、クライアント側から全てのデータが公開されていることが確認できます。
ページ内の要素を、toggleボタンで非表示にするシステムがあります。
非表示にしても、開発者用画面には非表示にした情報が見えていることが分かります。
プライバシールール
Bubbleのセキュリティを担保するために、プライバシールールを設定できます。
プライバシールールの目的と仕組みは、以下のようになります。
目的
- ユーザーが特定のデータにアクセスすることを防ぐ
仕組み
- データがサーバーから送信されるのを防ぐ
- Data Typeごとに適用可能
具体例
実際の例で、プライバシールールを作成していきます。
今回は、ログインしたユーザーに対してのプライバシールールを作成します。
以下のようにすると、User自身の情報が参照可能になりかつ、他人のemailを見ることを防げます。
- 「Current User is logged in」の時にemail以外をチェック
- 「This User is Current User」の時にAllow auto-binding以外をチェック
バックエンドワークフロー
セキュリティは、バックエンドワークフローによって保護されます。
バックエンドワークフローとは、以下の画像にある、クライアント側のワークフローとは異なり、サーバー側で実行できるワークフローのことを指します。
バックエンドワークフローで実行できるワークフローには、以下の3種類があります。
APIWorkflow
- ワークフローのスケジューリング(予約)
- 繰り返し処理
- サーバー側で実行したい処理
Recruiting Event
- 定期実行(バッチ処理)
Database Trigger Event
- データベース変更をトリガーとした処理
ハンズオン演習
プライバシールールによって保護されているメールアドレス宛に、メールを送信する例です。
プライバシールールで保護されたアドレスにメールを送信する、API workflowを作成します。
「Ignore privacy rules when running the workflow」をチェックすることで、プライバシールールを無視できます。
メール送信のアクションを設定します。
自分のデータのみ閲覧可能にするプライバシールールを作成します。
通常のワークフローから送信されたメールアドレスは、内容を確認できないのに対して、プライバシールールを無視したバックエンドワークフローはメールを確認できます。
Settingタブ
セキュリティを守るために、Settingタブで設定するべきことは、以下の三つです。
リリース前はベーシック認証をかける
- 目的:ページが不正アクセスされないようにする
以下のようにベーシック認証をかけることで、ページをロックできます。
パスワードポリシーを設定する
- 目的:ユーザーがアカウントに登録する際に設定するパスワードに制約をつける
- 最低8文字以上
- 大文字1文字と数字1文字を含める
全てのiFrameをブロックする
- 「Block all frames」を選択し、全てのiFrameをブロックする
API
- 使用しない場合は、チェックを外す
- データAPIを有効にしている場合は、必要なDataタイプのみ有効になっているか確認する
その他
そのほかに、Bubbleでのセキュリティを守るために重要なことです。
Bubbleアカウントのセキュリティをチェックする
- 2FA(2段階認証)が有効になっているか
- 安全なパスワードを使用しているか
- アカウント情報を共有する際に安全かどうか
機密データを暗号化されていない形で保存しない
- 社会保障番号など機密性の高い情報は暗号化して保存する
※クレジットカードは、暗号化された形式であってもDBに保存してはいけない
- クレジットカードの場合、Stripeなどの信頼できるプラットフォームと統合して、DBに保存しない
- URLのパラメーターに機密情報を含めない
- 以下の例では、パスワードをURLから確認出来てしまいます
データが公開されているかJS変数を使って確認する
- 以下の三つのデータは、実は公開されています。
Consoleで確認
- Option Sets
- Data Typesのデフォルト値
- Bubbleの全ページ名
セキュリティチェックツール
- CheckSoやnocode:nohackでは、BubbleのIDやURLを打ち込むことで簡単に、セキュリティをチェックできます。