Monthly Archives: 5月 2013

「Android Security 安全なアプリケーションを作成するために」第8回(5/31)

Posted on by 0 comment

参加者 青木(読み手)、沼田、今井(記)
範囲 pp.81-87

第5章 ファイルのアクセス許可

  • 5.4 外部記憶装置
    • 5.4.2 アクセス許可
    • 5.4.3 外部記憶装置を使用する上での注意点
  • 5.5 プリファレンス
    • P.82 PreferenceActivityクラス
      Honeycomb(API 11)から、PreferenceActivityクラスの代わりにPreferenceFragmentクラスを使用し、どこかのActivityに貼り付けるようになった。PreferenceActivity#addPreferencesFromResource()などのメソッドはdeplicatedになっている。
    • 5.5.1 PreferenceActivityクラス
      • p.83 本文3行目
        “_preferences”を付け足したもの → “preferences.xml“を付け足したもの

        • p.84 2.にも同様の箇所有り
    • 5.5.2 プリファレンスメソッド
      • p.84 リスト5-12 lsコマンド入力例に衍字(空白)
        .myapplication /shared_prefs

        • リスト5-13も同様
        • p.86 リスト5-21も同様(パッケージ名部分前後二箇所)
      • p.84 リスト5-14
        Activity.getPreferences(MODE_PRIVATE);とすると、Activity.xmlが出来るのではないか。通常は作りたいActivityクラス.getPreferences(MODE_PRIVATE);とするか、大抵はActivityのサブクラス内で使用するだろうから単にgetPreferences(MODE_PRIVATE);として使用するはず。
      • p.85 リスト5-15
        getSharedPreferences()を呼ぶのに、リスト5-12ではContext.とクラス名を指定していたり、リスト5-15ではクラス名を指定していなかったりでコード例に統一性がない。
        大抵はActivityのサブクラス内で使用するだろうから、わざわざContext.はつけないだろう。
      • p.86 リスト5-19
        MODE_MULTI_PROCESSとMODE_PRIVATEではファイルパーミションは同じ。getSharedPreferences()の読み取り方法が異なる。p.84 表5-12参照。
      • p.86 リスト5-20
        putBoolean(), putString()の値を定数で与えているのだし、他のputInt(), putFloat(), putLong()も定数の方が例としてはわかりやすいと思う。
      • p.86 リスト5-20 putInt()のキーに脱字
        putInt(”KeyInt",putInt("Key Int",
      • p.86 リスト5-21
        string以外は、値をvalueという属性で表現しているが、stringは子要素で表現しているんですね。文字列が入るからエスケープを少し楽にしたかった?
    • 5.5.3 他のアプリケーションからのプリファレンスの取得
      • p.87 リスト5-22
        NameNotFoundExceptionはどこから投げられる? → createPackageContext()
Category: Android Security

「Android Security 安全なアプリケーションを作成するために」第7回(5/28)

Posted on by 0 comment

参加者 今井(読み手)、青木、沼田(記)
範囲 pp.70 – 81

第5章 ファイルのアクセス許可

  • 5.2 ユーザIDとファイルアクセス
    • 5.2.1 ファイルの共有
      • 表 5-6
        見出しは「備考」ではなく「説明」等のほうが適切なのではないでしょうか。
      • MODE_WORLD_WRITEABLE
        writableはwriteableともつづるようです。
  • 5.3 アプリケーションデータディレクトリ
    • 5.3.1 アプリケーションデータディレクトリのファイルアクセス
      • 表 5-8
        • getDirメソッドの説明
          ディレクトリを取得することの方が主だと思いますが、説明を読むとディレクトリの作成が主になっていますね。
        • fileListメソッドの説明
          files以下のファイル名一覧を取得すると書かれているとサブディレクトリの中身も含めて取得できるように読めてしまいますね。
    • 5.3.2 自動生成されるディレクトリ
  • 5.4 外部記憶装置
    • 5.4.1 外部記憶装置でのファイルアクセス
Category: Android Security

「Android Security 安全なアプリケーションを作成するために」第6回(5/24)

Posted on by 0 comment

参加者 沼田(読み手)、今井、青木(記)
範囲 pp.56-70

第4章 アプリケーションファイル(APKファイル)

  • 4.4 他のアプリケーションからのリソースの取得
    • 4.4.5 Rawファイルの取得
    • 4.4.6 アセットファイルの取得
    • 4.4.7 AndroidManifest.xmlファイルの取得
  • 4.5 まとめ

第5章 ファイルのアクセス許可

  • 5.1 ファイルシステムの基本
    • 5.1.1 アンドロイドOSで利用できるコマンド
    • 5.1.2 lsコマンド
  • 5.2 ユーザIDとファイルアクセス
Category: Android Security

「Android Security 安全なアプリケーションを作成するために」第5回(5/21)

Posted on by 0 comment

参加者 青木(読み手)、沼田、今井(記)
範囲 pp.46-56

第4章 アプリケーションファイル(APKファイル)

  • 4.3 APKファイルの取得
    • p.47 4.3節の最後4行
      「著作権保護の対象となるファイル」を暗号化したり、端末内に保存しない措置をとるべきとあるが、「著作権保護の対象となるファイル」ではなく「秘密にしなければならないファイル」だろう。著作権法上の著作物だからといってかならずしも秘密にしたいものばかりではないし、著作物だからといって、秘密にしなければ著作権保護の対象にならないというものでもない。
  • 4.4 他のアプリケーションからのリソースの取得
    • 4.4.1 パッケージ名の取得
      • p.49 リスト4-8
        あまり私たちが普段考えている良いJavaコーディングっぽくないですね。
        宣言と同時に初期化できるローカル変数(packManager, list)を宣言と別に初期化したり、
        Listの各要素にアクセスするのに拡張for文(for-each)ではなく、forでインデックスを回したり、
        Androidでは何か理由があってこのような方法が推奨されているのだろうか。
      • p.49 中程のコード例
        型と変数名の間(getInstalledApplicationsの前)に空白が抜けている。
      • p.49 中程のコード例下 脱字
        GET_UNINTALLED_PACKAGES → GET_UNINSTALLED_PACKAGES
      • p.49 表4-2
        flagsによって戻り型がちがうように読み取れるけど、Javaでそんなことできるの?
        → 戻り値のListに含めるApplicationInfoオブジェクトの指定と、各ApplicationInfoオブジェクトの対応フィールドに値を入れるかの指定がごっちゃになっている。

        • GET_META_DATA: ApplicationInfoオブジェクトのpublic Bundle metaData に、表4-2の意味に書かれた値を入れて返す。
        • GET_SHARED_LIBRARY_FILES: ApplicationInfoオブジェクトのpublic String[] sharedLibraryFiles に、表4-2の意味に書かれた値を入れて返す。
        • GET_UNINSTALLED_PACKAGES: 戻り値のList<ApplicationInfo>に、表4-2の意味に書かれたアプリケーションを含める。
    • 4.4.2 コンテキストの取得
      • p.50 リスト4-9
        三行目のString targetNameの変数名は、packageNameの間違い。
    • 4.4.3 画像ファイルの取得
      • p.51 リスト4-10
        • 中程のコメント
          リソースIDを固定値(0x7f0xxxxx)の値って具体的には?
          → 0x7f020000
        • このfor文だと、存在しないリソースIDで終了してしまい、全IDを検索できないのでは?
          → かならず連番になっているようです。(p.52より)
      • p.53 リスト4-11
        各内部クラス名が小文字始まりになっているのはJavaとして気持ち悪いですね。
    • 4.4.4 レイアウトファイルの取得
      • p.54 リスト4-13
        StringBuilderではなくStringBufferを使っているのは何か理由があるのだろうか?
      • p.54 リスト4-13
        • p.55 l.2の第一引数、""は、" "の間違い?
        • p.55 l.16
          IOExceptionio e → IOException ioe の間違い
        • p.55 下から7行目のsb.append("");の引数も、" "の間違い?
        • 1つのリストで改行文字が、円マークnになっていたりバックスラッシュnになっていたりで読みにくい。
        • p.56 return sbになっているけど、StringBufferってCharSequenceのサブクラス?
          → CharSequenceインタフェースの実装クラスでした。

 

Category: Android Security

「Android Security 安全なアプリケーションを作成するために」第4回(5/17)

Posted on by 0 comment

参加者 今井(読み手)、青木、沼田(記)
範囲 pp.33 – 46

第3章 アンドロイドのセキュリティ

  • 3.5 固有識別子
    • 3.5.4 その他の識別子
  • 3.6 まとめ

第4章 アプリケーションファイル(APKファイル)

  • 4.1 アンドロイドプロジェクト
    • 4.1.1 リソースファイル
    • 4.1.2 アセットファイル
    • 4.1.3 APKファイル
  • 4.2 インストール
    • 4.2.1 ディレクトリ
      • リスト4-2
        Settings.*はファイル名だけが出力されていますが/system/app/にあるのでしょう。
        正誤表を見てみましたが特に記載はありませんでした)
    • 4.2.2 インストール種別
Category: Android Security

「Android Security 安全なアプリケーションを作成するために」第3回(5/14)

Posted on by 0 comment

参加者 沼田(読み手)、今井、青木(記)
範囲 pp.22-32

第3章 アンドロイドのセキュリティ

  • 3.2 証明書とアプリケーションの署名
    • 3.2.2 署名が使用される場面
    • 3.2.3 デバッグキー
  • 3.3 ユーザIDとファイルアクセス
  • 3.4 パーミッション
    リスト3-2 は電話帳データの読み取りのパーミッションの記載例です

    • 3.4.1 パーミッションによるアクセス制限
    • 3.4.2 パーミッションの作成
  • 3.5 固有識別子
    • 3.5.1 識別子の生成
    • 3.5.2 ハードウェアに関する識別子
    • 3.5.3 SIMに関する識別子
Category: Android Security

「Android Security 安全なアプリケーションを作成するために」第2回(5/10)

Posted on by 0 comment

参加者 青木(読み手)、沼田、今井(記)
範囲 pp.11-22

第2章 セキュリティ要件

  • 2.1 セキュリティ要件とは
  • 2.2 保護すべき項目の範囲
  • 2.3 プライバシー保護
    • 2.3.1 連絡先アプリのデータ
    • 2.3.2 プライバシー情報の範囲
    • 2.3.3 個人情報保護法
  • 2.4 著作権保護
  • 2.5 アプリケーションの悪用抑止
  • 2.6 アプリケーションの不正利用抑止
  • 2.7 まとめ

第3章 アンドロイドのセキュリティ

  • 3.1 セキュリティアーキテクチャ
    • p.20 図3-1
      「PRIFファイル」とは何?PREF(Preference)ファイルの間違い?
  • 3.2 証明書とアプリケーションの署名
    • 3.2.1 秘密鍵のセキュリティ

 

Category: Android Security

「Android Security 安全なアプリケーションを作成するために」第1回(5/7)

Posted on by 0 comment

参加者 今井(読み手)、青木、沼田(記)
範囲 巻末、pp.i – xii、pp.1 – 9

巻末

  • 会社紹介
  • 著者プロフィール
  • 協力(テクニカルレビュー)

発刊に寄せて

はじめに-アンドロイドとセキュリティ

第1章 ケーススタディ

  • 1.1 Skypeアプリの脆弱性
    • 1.1.1 チャット履歴の取得例
    • 1.1.2 悪意のあるプログラム
    • 1.1.3 なぜこのようなことが起こったのか
  • 1.2 コンテントプロバイダ使用時の典型的な脆弱性
    • 1.2.1 電話帳データの漏洩例
  • 1.3 まとめ
Category: Android Security