permissionの日本語でおk
DESCRIPTION
Androidのパーミッション一覧を表示するアプリ、Permission Viewerを作った際におもったこと。TRANSCRIPT
「Permissionの日本語でおk」
2011.10.14
@youten_redo ようてん
2
自己紹介
� ようてん (@youten_redo)
� IT系リーマン。Androidの仕事をしています。
� (ネタ) LTだいすき。
� つくったアプリ
� 本日の主役
他
「セキュリティでLTだと」
「ついに俺の時代が」
(こない)
少し昔話をさせてください
2010.03 Nexus One 購入
Marketでアプリを選択してインストール
Marketでアプリを選択してインストール
Marketでアプリを選択してインストール
Marketでアプリを選択してインストール
Marketでアプリを選択してインストール
Marketでアプリを選択してインストール
:
怪しいアプリ大丈夫?
Google「Permission見てよ」
9
日本語でおk
�これはひどい
2010.04の俺
「もう少しPermissionというものを
意識した方がいいんじゃないだろうか」
11
Permission Viewer作った
�機能
�インストールされている全アプリケーションのパーミッション一覧を取得し、カラフルに表示します。
�タップをすれば個別アプリケーションのパーミッション一覧、さらにタップすればそれぞれのパーミッションの説明が表示されます。
12
Permission Viewer作った
13
このアプリオススメ?
�古いです。�当時は同僚など、まわりに見せても目的があんまり理解し
てもらえませんでした。
�最近はそこそこ。
�更新してません。�Gingerbreadの際から、1年ぐらい更新してません。
�Honeycombでも動作しません。
�あんまりオススメしません。�tSpyCheckerとかS2 Permission Checkerとかの方がオ
ススメです。
本題
「そんなアプリ作ってた時の
小ネタを以下紹介」
15
の、前におさらい
�protectionLevelによるPermissionの分類
normal普通のやつ。デフォルト。
signature署名一致時のみ。
標準Permissionでは要システム署名
dangerous少し危ない。
ユーザに許可とってね。(こっそりできるけど)
signatureOrSystem署名一致orプリインのみ。
rootedなら残念ながらやり放題。
3rdPartyのアプリじゃ有効じゃないのがある
1. Permission文字列のリソースどこ
17
2. Permission文字列のリソースどこ
�(Android SDKインストールディレクトリ)¥platforms¥android-xx¥data¥res¥values-ja¥string.xml あたりにあります。
2. Android 1.5(API Level 3)だと…
19
2. Android 1.5(API Level 3)だと…
�Android 1.5から1.6になった際に増えたPermissionに対応するために、Android 1.5(API Level 3)で作ったアプリは、それ以上のAndroidデバイスへインストール時に増えたPermissionが勝手に付与されます。
�具体的には以下の2つ。
• READ_PHONE_STATE
• WRITE_EXTERNAL_STORAGE
�でもtargetSdkVersionを4以上にすればだいじょうぶ!
@95kugo先生他みんなありがとう
3. 全部がandroid.permission.*じゃない
21
3. 全部がandroid.permission.*じゃない
�Manifest.permissionのリファレンスを見れば分かるのですが、大半が「android.permission.*」なのに対して、一部そうなってないものがあります。
�具体的には以下の通り。
• com.android.alarm.permission.SET_ALARM
• com.android.browser.permission.READ_HISTORY_BOOKMARK
S
• com.android.browser.permission.WRITE_HISTORY_BOOKMARK
S
�文字列比較には留意を…。
4. 説明文が開発者向け
23
4. 説明文が開発者向け
�SMSの受信
�RECEIVE_SMS
�SMSメッセージの受信と処理をアプリケーションに許可します。悪意のあるアプリケーションがメッセージを監視したり、表示せずに削除する恐れがあります。
SとかMとか…難しいですよね
24
4. 説明文が開発者向け
�実行中のアプリケーションの順序の変更
�REORDER_TASKS
�タスクをフォアグラウンドやバックグラウンドに移動することをアプリケーションに許可します。悪意のあるアプリケーションが優先されて、コントロールできなくなる恐れがあります。
ラスクとかフォアグラがどうした
25
4. 説明文が開発者向け
�Linuxのシグナルをアプリケーションに送信
�SIGNAL_PERSISTENT_PROCESSES
�受信した電波を継続プロセスに送信することをアプリケーションに許可します。
訳が間違ってる気がしますよ??
5. 直訳怖い
27
5. 直訳怖い
�stickyブロードキャストの配信
�BROADCAST_STICKY
�配信が終了してもメモリに残るようなstickyブロードキャストをアプリケーションに許可します。悪意のあるアプリケーションがメモリを使いすぎて、携帯電話の動作が遅くなったり、不安定になる恐れがあります。
stickyも訳してくれよ。
28
5. 直訳怖い
�端末を永続的に無効にする
�BRICK
�携帯電話全体を永続的に無効にすることをアプリケーションに許可します。この許可は非常に危険です。
文鎮は危険です。
6. 日本語でおk
30
6. 日本語でおk
�完全なインターネットアクセス
�INTERNET
�ネットワークソケットの作成をアプリケーションに許可します。
何が完全なのか
31
6. 日本語でおk
�アプリケーションを常に実行する
�PERSISTENT_ACTIVITY
�自身を部分的に永続させて、他のアプリケーション用にはその領域をシステムに使わせないようにすることをアプリケーションに許可します。
我は永遠の存在と成りて他者を拒む!
32
6. 日本語でおk
�アプリケーションのコンポーネントを有効/無効にする
�CHANGE_COMPONENT_ENABLED_STATE
�別アプリケーションのコンポーネントの有効/無効を変更することをアプリケーションに許可します。これにより悪意のあるアプリケーションが、携帯電話の重要な機能を無効にする恐れがあります。アプリケーションコンポーネントが利用できない、整合性が取れない、または不安定な状態になる恐れがあるので、許可には注意が必要です。
長っ
まとめ
34
まとめ
1. アプリ開発に不要なものは隠蔽すべき
2. 開発者向けとユーザ向けは分離すべき
3. 継続的に粒度を再構築すべき
ユーザのために開発者ががんばるしかない