すべてのAndroidプログラマにオススメの一冊です。 #amazon||> ||< 自分もAndroidプログラミングを勉強していて、いくつかセキュリティ面も調査してきました。 本書籍で新しく勉強になった点など、以下、読書メモです。 - "3.5 固有識別子"(p29 - ) -- アプリ側で生成したUUIDを識別に使用するのがオススメ -- 以下は非推奨 --- READ_PHONE_STATE必要:IMEI, IMSI, ICCID --- READ_PHONE_STATE不要:シリアルNo, ANDROID_ID - "4.2.1 ディレクトリ" p42以降:アプリケーションをSDカードに移動→apkがSDカードに移る。Audio/Videoなど容量の大きいリソースを抱えたAPKの場合は効果的。データやファイルなどは"/data/data"以下のままのようだ。 -- apkをSDカードに配置させるには、p45の"SDカードインストール"も参照。 - p83 : "5.5.2 プリファレンスメソッド" : 3種類もある・・・ -- Context.getSharedPreferences() : MODE指定可能 -- PreferenceManager.getDefaultSharedPreferences() : MODE指定不可、MODE_PRIVATE固定 -- Activity.getPreferences() : MODE指定可能 - p89 : データベースファイルの保護 : -- SQLiteDatabase.openOrCDreateDatabase() : MODE指定不可、但し 644 でDBファイルが作成されるので要注意(他アプリからも読取は可) -- Context.openOrCreateDatabase() : MODE指定可能 -- SQLiteOpenHelper : MODE指定不可、MODE_PRIVATE固定 - "6.5 疑われやすいパーミッションの組み合わせ" (p117 - ) -- パーミッションの「組み合わせ」に対して、疑われてしまいそうなペアを示してくれているので、開発したアプリがこれらに該当する場合はユーザーへ分かりやすい形で明記する必要がある。 - "7.6 コンテントプロバイダのパーミッション設定事例" : 事例ベースで解説してくれているので分かりやすい。 -- コンテントプロバイダのパーミッションは、他(Activity/Receiver/Service)より複雑なので、最終的にこうした事例ベースに当てはめた上で検討することになりそう。 - "OSによるインテントデータの隠ぺい" (p153 - ) : log上でIntent内容がマスクされるか否か、抜き書き -- "tel:" マスクされる -- "smsto:" : マスクされる -- "mailto:" : アドレスはそのまま表示される -- "http://" : URLとクエリがそのまま表示される -- "geo:" : そのまま表示される - "9.2.3 ProGuardの使用法" (p199) -- "アンドロイドSDKの注意点" : まさにこれに嵌ってしまった・・・。 -- SDK r16 にアップデートしたら再発。SDKェ・・・。 - "動作している環境からパスワードを生成し、使用する" (p233 - ) -- 当然ながら、ここに掲載されているサンプルコードをそのまま使うのではなく、改造して使う。 -- ProGuardのセクションでは特に記されていないが、SDKのクラス・メソッドの呼び出しは難読化されないので、例えばPBEKeySpec()の呼び出し箇所から変数を逆に辿り、パスワードが解析される危険性は残る。(とはいえ、カジュアルハックの防止には効果がありそう) 以下は、本書を読んでいて不足感を感じた点です。 - ログ出力についての記述 : android.util.Log#v(), d(), i() ... はisLoggable()と組み合わせないと、なんだけど、自分の認識以上に常識化してるのかな?あるいは、そもそも秘密情報はデバッグログといえども出力しない、というのは当たり前の前提になっているのだろうか。 - アプリケーションに焦点を絞っているから仕方ないとは思うが、サーバとの通信(HTTP, HTTPSを使ったAPI呼び出しなど)関連のトピックが無い。 -- 例1:HTTPSを使うときの証明書の扱い --- Androidにインストール済みのルート証明書 --- 自己署名証明書の危険性、などなど -- 例2:OAuthの2-legged/3-leggedで使われるConsumerKeyの取り扱い --- 他、サーバサイドと絡めたtokenの適切な扱いなど。 上記のような不足感はあるものの、Androidアプリに特化した「セキュア開発」本としては日本で恐らく第一であり、内容的にも必要十分と思われます。Androidアプリの開発者全てにオススメできる一冊です。