SlideShare a Scribd company logo
1 of 44
Download to read offline
Java / Android
セキュアコーディング入門	




17-E-5                  久保 正樹	
                        JPCERTコーディネーションセンター	
                        脆弱性アナリスト	
                                  	
         Developers Summit 2012
自己紹介	

 §    久保 正樹(くぼ まさき)
       masaki.kubo@jpcert.or.jp	

 	

 §    脆弱性アナリスト@JPCERTコーディネーションセンター	

 §    GSSP-Cプログラマ、ISO/IEC SC27 WG4 エキスパート	


 §  プログラミングとの出会いはコンピュータ音楽から。前職は
     ソニー(株)でVAIOのソフトウェア開発。退職後、ダートマス
     大学で電子音響音楽修士。2005年からJPCERTコーディ
     ネーションセンターで情報セキュリティに従事。	

 	

                         Developers Summit 2012
自己紹介	

 §  先月、本を出しました!	

                 『Javaセキュアコーディング CERT/Oracle版』
                  http://www.amazon.co.jp/dp/4048860704	


                  歌代 和正(監修)	
                  久保 正樹, 戸田 洋三(翻訳)	
                  アスキー・メディアワークス(2012/1/27)	




          Developers Summit 2012
今日お話すること	

§  モバイルアプリをとりまくセキュリティ問題

§  セキュアコーディングの実践と3つの軸
 §  Java / Android の世界の
  脆弱性の実例とその修正


§  Java セキュアコーディング(CERT/Oracle版)の
 紹介

              Developers Summit 2012
Android/Javaの
セキュリティのヘッドライン	
 §  スマホを狙ったワンクリックウェアを確認
 §  Android端末を狙う不正プログラム、2012年
     末までに12万個に!?
 §  SMS 詐欺に利用される偽の Android マー
     ケットが再登場
 §  Javaの脆弱性を悪用する攻撃が急速に猛
     威
 §  …	
        プラットフォーム、マルウェア
                     の話題が後を絶たない	
          Developers Summit 2012
マルウェアに狙われたAndroid	

§  モバイルマルウェアの
    63%がAndroid狙い

§  アプリを改ざんして配布

§  目的はお金



             Developers Summit 2012
 モバイル端末に対する脅威	

§  成熟度の異なるプラットフォーム

§  ユースケース、利用パターンの複雑化
  §  従来のウェブアプリの脅威と異なる


§  アプリ単体だけ考えていてはだめ
  §  ウェブサービスとの連携
  §  C2DMとのインテグレーション	

           Developers Summit 2012
モバイルアプリのトップ10リスク(OWASP)

  §    M1 危険なデータ保存
  §    M2 不十分なサーバー側のコントロール
  §    M3 トランスポート層の保護が不十分
  §    M4 クライアントサイドインジェクション
  §    M5 お粗末な認証・認可の実装
  §    M6 セッション管理不備
  §    M7 信頼できない入力に基いたセキュリティ上の判断
  §    M8 サイドチャンネルでの情報漏えい
  §    M9 暗号化メカニズムの欠陥
  §    M10 センシティブな情報の漏えい	


               Developers Summit 2012
§  モバイルアプリでどこに脅威があるのか、だ
    いたい分かってきた

§  どう対応・修正するか…それが問題




        Developers Summit 2012
モバイルアプリの脆弱性	

 §  Tencent QQPhotoのパスワードハッシュ漏
     えい
 §  Kaixin001のコンタクトと平文パスワードを読
     まれる問題
 §  360 MobileSafeのSMSメッセージを読まれ
     る問題
 §  …
        基本的な間違いが繰返されている…	

                  JVN iPedia を "Android"をキーワードに検索	

           Developers Summit 2012
JPCERTに届けられたAndroidの脆弱性	

 §  2011/7〜約30件のアプリの脆弱性
  §  Androidプラットフォームの脆弱性も数件


 §  脆弱性の種類
  §  ファイル(DB)のパーミッション系
  §  Webview系
  §  JSONハイジャック系	



           Developers Summit 2012
新しいプラットフォームで繰り返される
過去の過ち	
§  Androidという新しいプラットフォーム
  §  アプリ250億ダウンロード(2011)
  §  大きなマーケットシェア+金銭的価値=攻撃


§  繰り返される、過去の過ち
  §  暗号化鍵のハードコーディング: 42%
  §  乱数のエントロピー不足:61%
  §  センシティブな情報の外部送信:39%
  §  エラーメッセージにセンシティブな情報:6%
          Veracode, State of Software Security Report. 2011	
          Developers Summit 2012
なぜ同じ過ちが繰り返されるのか?	

§  プログラマが「知らない」
  §  古い脆弱性が新しい脆弱性
  §  プラットフォームが成熟過程
  §  新たな脅威・攻撃手法が日々発見される世の
      中
   §  経験年数がものを言わない
  §  サプライチェーン
§  知っている(分かっている)けどできない!	
      数年前のウェブアプリ脆弱性のデジャヴ	
           Developers Summit 2012
何を知らないのが問題?	

     言語非依存のセキュアコーディング	
1.	
 入力値検査、FileI/O


     Java言語特有のセキュアコーディング
2.	
 OOP, Javaの型システム, expressionsなど
   言語仕様、標準APIに関するコーディングテクニック


3.	
 APIやプラットフォーム固有の
     セキュアコーディング
   J2EE/Android SDK,プラットフォームのセキュリティモデル	
            Developers Summit 2012
セキュアコーディング	

 §  プログラムのある種の欠陥が脆弱性を生む
  §  仕様/デザインの欠陥
  §  コーディングエラー
  §  パターンがある


 §  セキュアコーディングとは
  §  プログラマが脆弱性を作り込まないコーディング
      を実践する
    §  言語、API、プラットフォームを安全に(安全なところだ
        け)使いこなす
           Developers Summit 2012
1. 言語非依存の
  セキュアコーディング	




       Developers Summit 2012
Apache StrutsのXSS(1)	

 §  最近JVNで公開したstrutsの脆弱性	




           Developers Summit 2012
Apache StrutsのXSS(2)	
import java.io.Serializable;!
                                                                  問題のあるコード	
import java.util.Locale;!
 !
import org.apache.commons.lang.StringUtils;!
   !
// The Default ActionProxy implementation!
     … !
      Protected DefaultActionProxy(…, String actionName, String
methodName, …) {!
         LOG.debug("Creating an DefaultActionProxy for namespace "!
                    + namespace + " and action name " + actionName);!
          "     "!
!
         "this.actionName = actionName;!
         "this.namespace = namespace;!
         "this.executeResult = executeResult;!
         "this.method = methodName;!                       ActionNameとmethodNameは	
    }!                                                       外部から受け取ったデータ	

                        https://issues.apache.org/jira/secure/attachment/12472293/WW-35791-4.patch
                                    Developers Summit 2012
Apache StrutsのXSS(3)	
                      エラー画面の出力でXSS	

                                                                               攻撃者	

           webサーバ	

                              細工された入力	
                              http://...home.action?...action!login<script>alert(document.cookie)</
                              script>:cantLogin=some_value
          struts


                         actionName = login<script>alert(document.cookie)</script>
action1                  methodName = cantLogin=some_value


      action2
                   action3

                                   Developers Summit 2012
Apache StrutsのXSS(4)	
                                                                         修正後	
import org.apache.commons.lang.StringEscapeUtils;!
import org.apache.commons.lang.StringUtils;!            Apache Commons ライブラリの	
import java.io.Serializable;!
                                                         escape*()を活用して無害化	
import java.util.Locale;!
   !
// The Default ActionProxy implementation!
…!
     Protected DefaultActionProxy(…, String actionName, String methodName, …) !
     {!
        LOG.debug("Creating an DefaultActionProxy for namespace "!
                   + namespace + " and action name " + actionName);!
     !
!
  this.actionName = StringEscapeUtils.escapeHtml(actionName);!
  this.namespace = namespace;!
  this.executeResult = executeResult;!
  this.method =
StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml(methodName));!
  }!

                     https://issues.apache.org/jira/secure/attachment/12472293/WW-35791-4.patch
                                Developers Summit 2012
言語非依存のセキュアコーディングルール	

§  入力値検査
  §  パス名は正規化してから検証する
  §  ユーザ入力は無害化してからログに保存
§  ファイル名やファイルパスにはASCII文字
    セットのみを使用する
§  File I/O、NW I/Oの両端で互換性のある文
    字エンコーディングを使う


            Developers Summit 2012
2. JAVA言語特有の
  セキュアコーディング	




       Developers Summit 2012
サブクラスの依存性を保つ(1)	
                                extends
 java.util.Hashtable!
                            java.util.Properties!             extends
        put()!

                                                   java.security.Provider!
      remove()!

                                                           put()!
     entrySet()!

                                                          remove()!

   JDK1.2で追加された	
                                                         entrySet()!
(スーパークラスに対する変更)	




                   entrySet()
                          Developers Summit 2012
サブクラスの依存性を保つ(2)	

 §  スーパークラスに変更を加える場合(コード
     の保守時)、サブクラスの不変条件が侵害さ
     れないよう考慮する




         Developers Summit 2012
ボクシングとアンボクシングに注意(1)	

 Q. このコードの問題は?

 HashSet<Short> s = new HashSet<Short>();!
 for(short i=0; i<100;i++) {!
     s.add(i);!
     s.remove(i - 1);!
 }	




              Developers Summit 2012
ボクシングとアンボクシングに注意(2)	

 修正例:
 HashSet<Short> s = new HashSet<Short>();!
 for(short i=0; i<100;i++) {!
     s.add(i);!
     s.remove((short)(i – 1));!
 }	




              Developers Summit 2012
条件演算子 ? :        (1)	


Q. System.out.println()は何を出力する?	

char alpha = ‘A’;!
int i = 0;!
System.out.println(true ? alpha : 0);!       A	
System.out.println(true ? alpha : 65536);!   65	
System.out.println(true ? alpha : i);	
      65	



                Developers Summit 2012
条件演算子 ? :                    (2)	
char alpha = ‘A’;!
int i = 0;!
System.out.println(true ? alpha : 0);!
System.out.println(true ? alpha : 65536);!
System.out.println(true ? alpha : i);	



§  型の評価はけっこう複雑
  §  alphaの型はchar型(符号無し16ビット)
  §  問題は3番目の式の型
      §  0: char型で表現可能な定数式→char
      §  65536: charの最大値より1だけ大きい→二項格上げの
          結果intに
      §  i: 二項格上げの結果intに

                            Developers Summit 2012
Java/Androidでも整数オーバーフロー(1)	
mezzofanti/AssetsManager.java:!
                                                 問題のあるコード	
//@return the free space on sdcard in bytes!
public static long GetFreeSpaceB() {!
    try {!
       String storageDirectory =!
     Environment.getExternalStorageDirectory().toString();!
       StatFs stat = new StatFs(storageDirectory);!
       return stat.getAvailableBlocks() * stat.getBlockSize();!
    }!
    catch (Exception ex) {!
       return -1;!
    }!
}	



                        Developers Summit 2012
Java/Androidでも整数オーバーフロー(2)	
(修正後) !
return (long) stat.getAvailableBlocks() * stat.getBlockSize();
      "!

§  StatFsクラスのgetAvailableBlocks()と
    getBlockSize()はintを返す!
   §  式の値はint!
   §  intの最大値は2,147,483,647(およそ2GB)!
   §  2GB以上のSDカードを指すとアプリが起動しなかった!


§  long幅にキャストして演算する!

                      Developers Summit 2012
言語仕様は意外に知らないポイントがある	

§  コードを見て直感的に想像するプログラム
    の動作と、言語仕様上の動作が異なるケー
    スが少なくない

§  セキュリティに限らず、プログラマの意図通
    り正しく動くプログラムを書くために必須の
    知識



        Developers Summit 2012
3. APIやプラットフォーム固有の
  セキュアコーディング
  〜ANDROIDアプリ編	



       Developers Summit 2012
Androidアプリの脆弱性事例(1)	
問題	
 不適切なファイルパーミッション	
脅威	
 ユーザがキー入力したプライバシー情報等、センシティブな情報を攻撃者に盗ま
     れる
原因	
 •  ユーザのキー入力は sqlite データベースファイル X と Y に平文で保存される。
        これらのファイルのパーミッションが他のアプリから読取り可能に設定されてい
        る。
     •  サードパーティ製ライブラリの中でデフォルトのパーミション
        (OPEN_READWRITE) でSQLiteのデータベースファイルを作成しており、そ
        れをそのまま使用しているのが原因。

       #ls –al /data/data/com.XXX.android.XXXX
       drwxr-xr-x   1 10119    10119     2048 Aug   29   12:20   .
       drwxrwx--x   1 1000      1000     2048 Aug   29   12:19   ..
       drwxrwx--x   1 10119    10119     2048 Aug   29   12:20   cache
       drwxrwx--x   1 10119    10119     2048 Aug   29   12:20   databases
       drwxrwx--x   1 10119    10119     2048 Aug   29   12:20   files
       drwxr-xr-x   1 1000      1000     2048 Aug   29   12:19   lib
       -rw-r--r--   1 10119    10119     5120 Aug   29   12:20   X
       -rw-r--r--   1 10119    10119     5120 Aug   29   12:20   Y	



                           Developers Summit 2012
Androidアプリの脆弱性事例(1)	

 §  SQLiteDatabase.openOrCreateDatabaseで指定
  できるパーミションはすべてworld redable!	
   §  サードパーティ製ライブラリはこちらを使っていた	

 §  android.database.sqlite.SQLiteOpenHelper
     クラスのgetWritableDatabaseを呼び出すと、	
   §  android.content.Context.openOrCreateDatabaseを呼んでく
       れる!
   §  パーミッションを細かく設定できる(mode_privateとか)!




                  Developers Summit 2012
Androidアプリの脆弱性事例(2)	
問題	
 ContentProviderの実装不備によるディレクトリトラバーサル	
原因	
 Uriクラスは基本的に入力値検査しない。そのため、無効な入力が行われても、
     例外をスローせず、ゴミデータを返す。
脅威	
 Uriオブジェクトは,URIを「/」でsegmentに分割し、各segmentをURLデコードす
     る。攻撃者はURIにURLエンコードした文字列を含めることで、デコードされた結
     果生成される文字列をコントロールできる。

public ParceFileDescriptor openFile(Uri uri, String mode) {!
  File file = new File("/mnt/sdcard/XXX/", uri.getLastPathSegment()):!
!
      return ParceFileDescriptor.open(file, ParceFileDescriptor.MODE_READ_ONLY);!
}	



                                      public abstract String getLastPathSegment()!

                                      Returns
                                         the decoded last segment or null if the path is empty	


                                Developers Summit 2012
Androidアプリの脆弱性事例(3)	
// getPathSegments()メソッドの実装から抜粋!
!                                         pathを取得	
2090    String path = getEncoded();!
2091    if (path == null) {!
2092        return pathSegments = PathSegments.EMPTY;!
2093    }!
2094!
2095    PathSegmentsBuilder segmentBuilder = new
PathSegmentsBuilder();!
2096!                                      pathから先頭の/を探す
2097    int previous = 0;!
2098    int current;!
2099    while ((current = path.indexOf('/', previous)) > -1) {!
2100        // This check keeps us from adding a segment if the path
starts!
2101        // '/' and an empty segment for "//".!
2102        if (previous < current) {!             pathを分割してデコード
2103            String decodedSegment!
2104                    = decode(path.substring(previous, current));!
2105            segmentBuilder.add(decodedSegment);!
2106        }!
2107        previous = current + 1;!
2108    }!
                             プラットフォーム側の問題とも言える…	
                         Developers Summit 2012
セキュアコーディングの実践	




      Developers Summit 2012
Java/Androidプログラマに求められる資質	

Java セキュアコーディング CERT/Oracle版

 1. 言語非依存の注意点

 2. Java言語特有の注意点


        +	
                            サポート	

                                   コード解析ツール
 3. APIやプラットフォーム固有の
   セキュアコーディングテクニック
          Developers Summit 2012
Javaセキュアコーディングスタンダード
CERT/Oracle版	
 https://www.jpcert.or.jp/java-rules/	




              Developers Summit 2012
Javaセキュアコーディングスタンダード
を活用するメリット	

 §  Java言語自体の理解が深まる

 §  コード例に学ぶ

 §  コード保守の負荷低減、品質安定、レビュー
     短縮	



          Developers Summit 2012
[宣伝1]
Androidセキュアコーディングセミナー	
 §  日時:3月14日 13:00〜19:00 @ 翔泳社
 §  タイトル『Androidセキュアコーディングセミナー〜
     安全なアプリ開発のための基礎知識』
   §  Androidセキュリティー概論から実機を使ったセキュリ
       ティコードレビューまで
   §  脆弱性を作り込まないテクニック教えます!
   §  初回限定35,000円(税込36,750円)	
 §  お申込みは、CodeZineのHPで!
       http://codezine.jp/seminar/

               Developers Summit 2012
[宣伝2]
出張セミナーやってます	
 §  C/C++, Javaのセキュアコーディング
  §  [実績] 大手家電メーカー、ゲームメーカー
  §  [時間、内容] ご相談に柔軟に応じます!
  §  全国どこへでも


 §  お問い合わせ、ご用命は
  §  セキュアコーディング担当:佐藤まで
  §  secure-coding@jpcert.or.jp	



              Developers Summit 2012
一緒に安全なアプリ開発に
  取り組みましょう!	




    Developers Summit 2012
ご清聴ありがとうございました	




    Q&A	

    Developers Summit 2012

More Related Content

What's hot

Androidプログラミング入門
Androidプログラミング入門Androidプログラミング入門
Androidプログラミング入門OESF Education
 
PHPにおけるRIA事情と開発
PHPにおけるRIA事情と開発PHPにおけるRIA事情と開発
PHPにおけるRIA事情と開発konekto
 
どうなる?Windows 8時代の業務アプリ開発
どうなる?Windows 8時代の業務アプリ開発どうなる?Windows 8時代の業務アプリ開発
どうなる?Windows 8時代の業務アプリ開発Yuya Yamaki
 
HTML5など社内勉強会 Vol.11 - High Performance Web and iOS 6 WebKit
HTML5など社内勉強会 Vol.11 - High Performance Web and iOS 6 WebKitHTML5など社内勉強会 Vol.11 - High Performance Web and iOS 6 WebKit
HTML5など社内勉強会 Vol.11 - High Performance Web and iOS 6 WebKitGeorge Harada
 
Android api-levels
Android api-levelsAndroid api-levels
Android api-levelsKazuaki Ueda
 
2012 08-23 Mame Night Jenkins
2012 08-23 Mame Night Jenkins2012 08-23 Mame Night Jenkins
2012 08-23 Mame Night JenkinsTakayuki Okazaki
 
Jenkins ユーザ・カンファレンス 2012 東京 S406-5 : 開発者とディレクターの視点を変えていく方法
Jenkins ユーザ・カンファレンス 2012 東京 S406-5 : 開発者とディレクターの視点を変えていく方法Jenkins ユーザ・カンファレンス 2012 東京 S406-5 : 開発者とディレクターの視点を変えていく方法
Jenkins ユーザ・カンファレンス 2012 東京 S406-5 : 開発者とディレクターの視点を変えていく方法Takayuki Okazaki
 
WPF/Silverlight視点で視る MetroスタイルのXAML
WPF/Silverlight視点で視るMetroスタイルのXAMLWPF/Silverlight視点で視るMetroスタイルのXAML
WPF/Silverlight視点で視る MetroスタイルのXAMLYuya Yamaki
 
Androidロボットサミットin京都
Androidロボットサミットin京都Androidロボットサミットin京都
Androidロボットサミットin京都Kenichi Yoshida
 
Androidアプリケーション応用 WebAPI開発
Androidアプリケーション応用 WebAPI開発Androidアプリケーション応用 WebAPI開発
Androidアプリケーション応用 WebAPI開発OESF Education
 
【16-B-7】TIDAコンソーシアム
【16-B-7】TIDAコンソーシアム【16-B-7】TIDAコンソーシアム
【16-B-7】TIDAコンソーシアムDevelopers Summit
 
AndroidーiOS開発比較〜iOSエンジニアから見たAndroidのアレコレ〜
AndroidーiOS開発比較〜iOSエンジニアから見たAndroidのアレコレ〜AndroidーiOS開発比較〜iOSエンジニアから見たAndroidのアレコレ〜
AndroidーiOS開発比較〜iOSエンジニアから見たAndroidのアレコレ〜Takaaki Tanaka
 
RICOH THETA x IoT デベロッパーズ コンテスト 第2回クラウドAPIセミナー
RICOH THETA x IoT デベロッパーズ コンテスト 第2回クラウドAPIセミナーRICOH THETA x IoT デベロッパーズ コンテスト 第2回クラウドAPIセミナー
RICOH THETA x IoT デベロッパーズ コンテスト 第2回クラウドAPIセミナーcontest-theta360
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platformToru Yamaguchi
 
Phone gap+javascriptスマホアプリ開発(入門編)
Phone gap+javascriptスマホアプリ開発(入門編)Phone gap+javascriptスマホアプリ開発(入門編)
Phone gap+javascriptスマホアプリ開発(入門編)Monaca
 
Androidアプリケーション開発入門
Androidアプリケーション開発入門Androidアプリケーション開発入門
Androidアプリケーション開発入門OESF Education
 
Androidアプリのストレージ戦略
Androidアプリのストレージ戦略Androidアプリのストレージ戦略
Androidアプリのストレージ戦略Masahiro Hidaka
 

What's hot (19)

Androidプログラミング入門
Androidプログラミング入門Androidプログラミング入門
Androidプログラミング入門
 
PHPにおけるRIA事情と開発
PHPにおけるRIA事情と開発PHPにおけるRIA事情と開発
PHPにおけるRIA事情と開発
 
どうなる?Windows 8時代の業務アプリ開発
どうなる?Windows 8時代の業務アプリ開発どうなる?Windows 8時代の業務アプリ開発
どうなる?Windows 8時代の業務アプリ開発
 
HTML5など社内勉強会 Vol.11 - High Performance Web and iOS 6 WebKit
HTML5など社内勉強会 Vol.11 - High Performance Web and iOS 6 WebKitHTML5など社内勉強会 Vol.11 - High Performance Web and iOS 6 WebKit
HTML5など社内勉強会 Vol.11 - High Performance Web and iOS 6 WebKit
 
Android api-levels
Android api-levelsAndroid api-levels
Android api-levels
 
2012 08-23 Mame Night Jenkins
2012 08-23 Mame Night Jenkins2012 08-23 Mame Night Jenkins
2012 08-23 Mame Night Jenkins
 
Jenkins ユーザ・カンファレンス 2012 東京 S406-5 : 開発者とディレクターの視点を変えていく方法
Jenkins ユーザ・カンファレンス 2012 東京 S406-5 : 開発者とディレクターの視点を変えていく方法Jenkins ユーザ・カンファレンス 2012 東京 S406-5 : 開発者とディレクターの視点を変えていく方法
Jenkins ユーザ・カンファレンス 2012 東京 S406-5 : 開発者とディレクターの視点を変えていく方法
 
WPF/Silverlight視点で視る MetroスタイルのXAML
WPF/Silverlight視点で視るMetroスタイルのXAMLWPF/Silverlight視点で視るMetroスタイルのXAML
WPF/Silverlight視点で視る MetroスタイルのXAML
 
Androidロボットサミットin京都
Androidロボットサミットin京都Androidロボットサミットin京都
Androidロボットサミットin京都
 
Androidアプリケーション応用 WebAPI開発
Androidアプリケーション応用 WebAPI開発Androidアプリケーション応用 WebAPI開発
Androidアプリケーション応用 WebAPI開発
 
【16-B-7】TIDAコンソーシアム
【16-B-7】TIDAコンソーシアム【16-B-7】TIDAコンソーシアム
【16-B-7】TIDAコンソーシアム
 
AndroidーiOS開発比較〜iOSエンジニアから見たAndroidのアレコレ〜
AndroidーiOS開発比較〜iOSエンジニアから見たAndroidのアレコレ〜AndroidーiOS開発比較〜iOSエンジニアから見たAndroidのアレコレ〜
AndroidーiOS開発比較〜iOSエンジニアから見たAndroidのアレコレ〜
 
RICOH THETA x IoT デベロッパーズ コンテスト 第2回クラウドAPIセミナー
RICOH THETA x IoT デベロッパーズ コンテスト 第2回クラウドAPIセミナーRICOH THETA x IoT デベロッパーズ コンテスト 第2回クラウドAPIセミナー
RICOH THETA x IoT デベロッパーズ コンテスト 第2回クラウドAPIセミナー
 
AndroidでDIxAOP
AndroidでDIxAOPAndroidでDIxAOP
AndroidでDIxAOP
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platform
 
Phone gap+javascriptスマホアプリ開発(入門編)
Phone gap+javascriptスマホアプリ開発(入門編)Phone gap+javascriptスマホアプリ開発(入門編)
Phone gap+javascriptスマホアプリ開発(入門編)
 
Androidアプリケーション開発入門
Androidアプリケーション開発入門Androidアプリケーション開発入門
Androidアプリケーション開発入門
 
Parallel Technology
Parallel TechnologyParallel Technology
Parallel Technology
 
Androidアプリのストレージ戦略
Androidアプリのストレージ戦略Androidアプリのストレージ戦略
Androidアプリのストレージ戦略
 

Viewers also liked

デブサミ2012 appinventorユーザー会
デブサミ2012 appinventorユーザー会デブサミ2012 appinventorユーザー会
デブサミ2012 appinventorユーザー会Takeaki Tada
 
Android最新技術動向(2012.2)
Android最新技術動向(2012.2)Android最新技術動向(2012.2)
Android最新技術動向(2012.2)Makoto Anjo
 
実践Android Developer Testing
実践Android Developer Testing実践Android Developer Testing
実践Android Developer Testingussy
 
20120216 デブサミ 座談会
20120216 デブサミ 座談会20120216 デブサミ 座談会
20120216 デブサミ 座談会akihiro uehara
 
Javaプログラミングをスッキリ学ぶ10のコツ
Javaプログラミングをスッキリ学ぶ10のコツJavaプログラミングをスッキリ学ぶ10のコツ
Javaプログラミングをスッキリ学ぶ10のコツKiyotaka NAKAYAMA
 
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜Yasutomo Kawanishi
 
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Yasutomo Kawanishi
 
【16-D-6】比べてわかるフィーチャーフォンとスマホのアプリ開発・運用のポイント
【16-D-6】比べてわかるフィーチャーフォンとスマホのアプリ開発・運用のポイント【16-D-6】比べてわかるフィーチャーフォンとスマホのアプリ開発・運用のポイント
【16-D-6】比べてわかるフィーチャーフォンとスマホのアプリ開発・運用のポイントDevelopers Summit
 
Python入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニングPython入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニングYuichi Ito
 
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~Yasutomo Kawanishi
 

Viewers also liked (10)

デブサミ2012 appinventorユーザー会
デブサミ2012 appinventorユーザー会デブサミ2012 appinventorユーザー会
デブサミ2012 appinventorユーザー会
 
Android最新技術動向(2012.2)
Android最新技術動向(2012.2)Android最新技術動向(2012.2)
Android最新技術動向(2012.2)
 
実践Android Developer Testing
実践Android Developer Testing実践Android Developer Testing
実践Android Developer Testing
 
20120216 デブサミ 座談会
20120216 デブサミ 座談会20120216 デブサミ 座談会
20120216 デブサミ 座談会
 
Javaプログラミングをスッキリ学ぶ10のコツ
Javaプログラミングをスッキリ学ぶ10のコツJavaプログラミングをスッキリ学ぶ10のコツ
Javaプログラミングをスッキリ学ぶ10のコツ
 
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
 
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
 
【16-D-6】比べてわかるフィーチャーフォンとスマホのアプリ開発・運用のポイント
【16-D-6】比べてわかるフィーチャーフォンとスマホのアプリ開発・運用のポイント【16-D-6】比べてわかるフィーチャーフォンとスマホのアプリ開発・運用のポイント
【16-D-6】比べてわかるフィーチャーフォンとスマホのアプリ開発・運用のポイント
 
Python入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニングPython入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニング
 
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~
 

Similar to Java/Androidセキュアコーディング

Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Yuki Higuchi
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようAkira Shimosako
 
[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見Yosuke HASEGAWA
 
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発多分モダンなWebアプリ開発
多分モダンなWebアプリ開発tak-nakamura
 
RoR周辺知識15項目
RoR周辺知識15項目RoR周辺知識15項目
RoR周辺知識15項目saiwaki
 
IDAの脆弱性とBug Bounty by 千田 雅明
IDAの脆弱性とBug Bounty by 千田 雅明IDAの脆弱性とBug Bounty by 千田 雅明
IDAの脆弱性とBug Bounty by 千田 雅明CODE BLUE
 
CodeIgniterによるPhwittr
CodeIgniterによるPhwittrCodeIgniterによるPhwittr
CodeIgniterによるPhwittrkenjis
 
SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-Hiromu Yakura
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略takezoe
 
Realmの暗号化とAndroid System
Realmの暗号化とAndroid SystemRealmの暗号化とAndroid System
Realmの暗号化とAndroid SystemKeiji Ariyama
 
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性JPCERT Coordination Center
 
なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)
なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)
なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)Masaya Tahara
 
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)JPCERT Coordination Center
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireAkio Katayama
 
テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化Yukei Wachi
 
Automatic api document generation 101
Automatic api document generation 101Automatic api document generation 101
Automatic api document generation 101LINE Corporation
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platformToru Yamaguchi
 
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...Insight Technology, Inc.
 

Similar to Java/Androidセキュアコーディング (20)

Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
 
[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見
 
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発多分モダンなWebアプリ開発
多分モダンなWebアプリ開発
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 
RoR周辺知識15項目
RoR周辺知識15項目RoR周辺知識15項目
RoR周辺知識15項目
 
IDAの脆弱性とBug Bounty by 千田 雅明
IDAの脆弱性とBug Bounty by 千田 雅明IDAの脆弱性とBug Bounty by 千田 雅明
IDAの脆弱性とBug Bounty by 千田 雅明
 
CodeIgniterによるPhwittr
CodeIgniterによるPhwittrCodeIgniterによるPhwittr
CodeIgniterによるPhwittr
 
SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
Realmの暗号化とAndroid System
Realmの暗号化とAndroid SystemRealmの暗号化とAndroid System
Realmの暗号化とAndroid System
 
実践 NestJS
実践 NestJS実践 NestJS
実践 NestJS
 
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
 
なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)
なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)
なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)
 
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化
 
Automatic api document generation 101
Automatic api document generation 101Automatic api document generation 101
Automatic api document generation 101
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
 

Recently uploaded

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Recently uploaded (9)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

Java/Androidセキュアコーディング