ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

PWAにおけるmBaaSの安全な利用法を考える

f:id:mbaasdevrel:20190410173810p:plain

PWA(Progressive Web Apps)において、mBaaSを使うことでサーバサイドの面倒な実装を省いて、すぐにWebアプリケーションを開発できるようになります。ぜひ使って欲しいのですが、いくつか注意点があります。今回はそんなmBaaSをPWAで利用する上での注意点を紹介します。

キーが漏洩するリスク

PWAはJavaScriptを使います。そこに書かれたアプリケーションキー、クライアントキーは誰からでも見られる前提で考えなければなりません。そこで、以下のような対策を考えます。

キーを記述したファイルをFetch関数で取得する

コードの中にキーをハードコーディングするのではなく、インターネット接続がある時に都度取得するようにします。これはキーが漏洩する前提で、いつでも再生成するためです。もちろんこのファイルはキャッシュ対象外としておきます。オフラインの時にはそもそもmBaaSにアクセスできませんので、その場合はダミーのキーを使うようにすれば問題ないでしょう。

難読化する

キーが見られないよう難読化する工夫も考えられます。この場合はWebAssemblyを使います。なお、単純に文字列を記述してしまうと簡単に探せてしまいますので、可逆暗号化を使って埋め込んでおくのがお勧めです。

クラスを作られてしまうリスク

アプリからのクラス作成を無効にすることで、漏洩したキーを使って自由にクラスを作られてしまうリスクを回避できます。

f:id:mbaasdevrel:20190410170203p:plain

フィールドを作られてしまうリスク

クラスのパーミッションを使ってフィールド追加を防止できます。

f:id:mbaasdevrel:20190410170223p:plain

プッシュ通知を作られてしまうリスク

PWAの場合はプッシュ通知は使いませんので、管理画面で無効にしておいた方が良いでしょう。

f:id:mbaasdevrel:20190410170359p:plain

もしアプリとデータを共有しており、プッシュ通知のデータがある場合にもSDKからの操作を無効にしておくことで、管理画面からのみプッシュ通知を作成できるように制御できます。

f:id:mbaasdevrel:20190410170410p:plain

匿名データを使わない

悪意を持ったユーザにアクセスされないよう、ACLをきちんと設定しましょう。逆に悪意を持ったユーザが不正なデータを作成する場合もあります。この時にはACLを確認し、データに問題がないか確認しましょう。

まとめ

キーの漏洩はACLを適切に設定しておけば怖い問題ではありません。勝手にデータを改ざんされる、データを作られると言った問題は起こらないよう適切な設定を行ってください。

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。