NIFCLOUD-mbaas / UserCommunity

ニフクラ mobile backend ユーザーコミュニティ
https://mbaas.nifcloud.com/
82 stars 18 forks source link

nifty mbaas のなりすましPush通信を防ぎたい #472

Closed waffleruskbutter closed 8 years ago

waffleruskbutter commented 8 years ago

現在、monaca(HTML+CSS+Javascript)でモバイルアプリを開発しています。

■最終的な構成は以下を想定しています。 モバイルアプリ <--> nifty mbaas <--> 自server 自server上で定期的にプログラムを走らせ、適宜Pushをモバイルアプリへ送るという事を実現させたいです。

■懸念点 nifty mbaasを使うためには、monaca アプリの中に[クライアントキー][アプリケーションキー]を 記載する必要がありますが、monaca でビルドしたアプリはunzipすると中身が全て見えてしまいます。

[クライアントキー][アプリケーションキー]があれば、 REST APIを用いてなりすましPush通信ができてしまうように思えるのですが、 こちら防ぎ方を教えていただけませんでしょうか? そもそも誤解がありますでしょうか?

■補足

【過去質問】セキュリティ対策方法の相談 https://github.com/NIFTYCloud-mbaas/UserCommunity/issues/29

ACLの設定でデータ漏えいは防げることは理解できたのですが、 Push通信はACL設定が見当たりませんでした。

またcordovaのencryptプラグインでソースコードを暗号化する方法があることは理解しています。 nifty mbaas側の対応策を知りたいと考えています。

■補足 2 同質問を、teratail、stackoverflowへも投稿しています。 https://teratail.com/questions/38272 http://ja.stackoverflow.com/questions/26876/nifty-mbaas-%E3%81%AE%E3%81%AA%E3%82%8A%E3%81%99%E3%81%BE%E3%81%97push%E9%80%9A%E4%BF%A1%E3%82%92%E9%98%B2%E3%81%8E%E3%81%9F%E3%81%84

waffleruskbutter commented 8 years ago

こちらで回答がつかなかったため、 別途、nifty_mbaas公式サイトから質問をしまして ご担当者様からご回答いただきました。


[クライアントキー][アプリケーションキー]をコードに実装している場合、 コードが漏れた場合や、ビルドしたアプリを Disassemble してキー情報を抜 かれるなどした時、キーの不正利用は防ぐ手段がございません。 これは不具合ではなく、仕様ということになります。

なお、外部サーバに置いたキー情報を処理の都度取得するなどの方法を用いれ ば、キー情報そのものを隠蔽することは可能と存じます。 こちらに関して、以下ブログ記事がございますので、ご参考にしていただけま すと幸いです。

 ◇クライアントキーを隠蔽して安全にmBaaSを使ってみる   http://blog.mb.cloud.nifty.com/?p=7410


色々な状況の方がいらっしゃると思いますが、 私は、キーをアプリに持たせるのはリスクを感じました。 外部サーバにキーを置くことを検討します。

本件、ご興味持ってくださった方ありがとうございました。

waffleruskbutter commented 8 years ago

Monacaが2016/06/22に、cordova6.2対応したことで、 こちらの暗号化プラグインが使えるようになりました。 https://github.com/tkyaji/cordova-plugin-crypt-file

※MonacaでGoldプラン以上でないと、[cordova pluginのインポート]機能は使えません(2016/06/23時点)

対応策としては、以下の2つが考えられそうです。 ・コードを暗号化する ・外部サーバに置く

どなたかの参考になれば幸いです。