「メルカリとソウゾウアプリのアプリ間連携の仕組み in 2017 summer」のセキュアコーディングガイドに関する補足

先日 Souzoh Android Talkで「メルカリとソウゾウアプリのアプリ間連携の仕組み in 2017 summer」という話をしました。

mercari.connpass.com

アプリ間で連携をする際にはセキュリティに気をつけてね!具体的な実装はセキュアコーディングガイドを読んで!という感じで話しました。

しかしまあセキュアコーディングガイドって色々書いてあって具体的にどこを読んだらいいのかわからない!という声もちらほら。

つーことで、今回資料に書いた実装をする上で実際にどこを読んだらいいのか補足としてまとめることにしました。

補足として紹介する内容を読めば問題ない!というものではないです。参考までに!くらいの温度感です。

資料は以下になります。

Android アプリのセキュア設計・セキュアコーディングガイド」の資料は以下になります。

www.jssec.org

Android アプリのセキュア設計・セキュアコーディングガイド PDF

注意点

  • ※「Androidアプリのセキュア設計・セキュアコーディングガイド」2017年2月1日版 を元にまとめてますので、改定されると章番号などが違ってる場合があるかもしれませんのでご注意ください
  • セキュアコーディングガイトにのっていることがAndroid セキュリティのすべてではありません。なのでセキュアコーディングガイドさえ読めば安全!ということではありません

Account Managerに関する補足

Account Managerの実装はそこまで詳しくないですが、以下の章を読んだ方がいいと思います。

  • 「5.3. Account Managerに独自アカウントを追加する」

ContentProvider + Signature Permissionに関する補足

資料内で紹介した自社アプリ間でデータ共有するContentProviderを作るのであれば、以下の章を読んだ方がいいと思います。

  • 「4.3.1.4. 自社限定 Content Providerを作る・利用する」
  • 「4.3.2. ルールブック」
  • 「5.2. Permission と Protection Level」

自社限定で呼び出せるコンポーネント(ActivityやServiceなど)を作る際のことも、同様にセキュアコーディングガイト内に書いてあります。

ContentProvider以外で自社限定で呼び出せるコンポーネントを作る際には、それらの章も必ず読んでください。

また、自社限定でなくてもContentProviderを使用する際には、ContentProviderに関する「4.3. Content Providerを作る・利用する」の章は読んだほうがいいと思います。

Permission 定義先勝ち問題に関する補足

こちらに関しては資料内でも具体的にセキュアコーディングガイドのどこを読んだほうがいいのか書きましたが、以下の章を読んだ方がいいと思います。

  • 「5.2.3.1. 独自定義 Signature Permissionを回避できるAndroid OSの特性とその対策」

Intentでの連携 + 連携先ののアプリが本物かどうかを調べる に関する補足

Intentという大きいくくりだと読む章が定まりにくいのですが、例えば特定のActivityをIntentで呼び出す際には、以下の章を読んだ方がいいと思います。

  • 「4.1. Activityを作る・利用する」
  • 「4.1. 4.7. Browsable Intent を利用する」

連携先ののアプリが本物かどうかを調べる というところでは自社アプリに限定するのであれば、以下の章を読んだ方がいいと思います。

  • 「4.1.1.4. 自社限定 Activity を作る・利用する」
  • 「5.2. Permission と Protection Level」

Activity以外のコンポーネントをIntentで呼び出す際にも、それぞれ自社限定の章がコンポーネントごとにありますので、そちらを読んだ方がいいと思います。