ガラケーで楽しむオレJSの勧め



                  2010年7月24日
                          徳丸 浩
         @ockeghem / id:ockeghem
JavaScriptと私

   興味をもったのはサイ本(第2版 1997/7)と出会ってのこと
       1998年のころと思われる
   Aha! なんて面白い言語なんだ!
   「オブジェクト指向プログラム言語としてのJava...
携帯電話とJavaScript

   1999年のiモード以来、ケータイブラウザではJavaScriptが長らく
    サポートされていなかった
   EZwebは今でもサポートされていない
       いわゆるフルブラウザは除く
...
iモードブラウザ2.0の登場
2009年5月19日づけNTTドコモ社の報道発表より




http://www.nttdocomo.co.jp/info/news_release/page/090519_00.html より引用

     ...
ソフトバンクでもJavaScriptに対応




                                                                 実はちょっと違った
http://k-tai.impress....
本当に2010年夏モデルからなのか?

   実はかなり以前からソフトバンク端末の一部のモデルで
    JavaScriptに対応していた
   ノキア 702NK(2004年12月発売)では簡単なJavaScriptに対応
     ...
ソフトバンク社技術資料より

     端末は、ソフトバンク携帯電話向けJavaScript を利用
     できる。
     ソフトバンク携帯電話向けJavaScript は、Standard
     ECMA-262 ECMAScri...
ケータイJavaScriptの互換性

   分かっている非互換性 オレ標準
   ドコモの問題
       alert、confirm、promptが動かない / setRequestHeaderが動かない
        いずれも何...
ドコモのalert停止はXSS対策?

    XSS脆弱なスクリプト(本日の唯一のJavaScript)

    <body>
    こんにちは<?php echo $_GET['p']; ?>さん
    </body>

    ...
ドコモのalert停止はXSS対策?

    ドコモ(P-07A)       ソフトバンク(932SH)




                                     12
ドコモのalert停止はXSS対策?

    ドコモ(P-07A)       ソフトバンク(932SH)




     XSSは発
     動しない
                        XSSが発
            ...
ドコモのalert停止はXSS対策?

    ドコモ(P-07A)       ソフトバンク(932SH)




     XSSは発
     動しない
                        XSSが発
            ...
ドコモのalert停止はXSS対策?

    ドコモ(P-07A)       ソフトバンク(932SH)




     alertが動か
     XSSは発
     ないだけで
     動しない
     XSSは有効      ...
ソフトバンクの「XSS対策」も発覚

   URLに「<」、「>」、「”」のいずれかの文字がある場合、その文字以
    降を削除してWebサーバに送出している
    http://example.jp/?p=foo<script>aler...
setRequestHeaderはどのヘッダを改変してよいか?




http://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest よ...
初出:5月27日




http://mb.softbank.jp/mb/information/details/100527.html より引用          18
http://creation.mb.softbank.jp/docs/A-081-111-BrowserExtension_1.0.1.pdf より引用   19
20
twtr.jpの事例




http://www.tokumaru.org/d/20100222.html#p01

                                              21
Ajax有効な機種のサマリ




•ただし、SHARPの最新機種943SHのみは、Refererが送出されるが、改変はできない
•△はデフォルトでAjax無効、オプションにより有効化可能(SHARP端末は多いので抜粋)
•上記以外のPanas...
setRequestHeaer制限の副作用

   iモード2.0、SoftBank 2.0ともsetRequestHeaderには厳しい制限
    が掛かっている
   互換性を損なう可能性
       POSTリクエストの際に、C...
まとめ

   最近のガラケーではJavaScriptが利用できる機種がある
   おもに「かんたんログイン」との関係で、JavaScriptには制限がか
    けられている
   ソフトバンクの古い機種には危険な仕様があるが、ユーザに...
Upcoming SlideShare
Loading in …5
×

ガラケーで楽しむオレJSの勧め

7,207 views
7,050 views

Published on

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,207
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
13
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

ガラケーで楽しむオレJSの勧め

  1. 1. ガラケーで楽しむオレJSの勧め 2010年7月24日 徳丸 浩 @ockeghem / id:ockeghem
  2. 2. JavaScriptと私  興味をもったのはサイ本(第2版 1997/7)と出会ってのこと  1998年のころと思われる  Aha! なんて面白い言語なんだ!  「オブジェクト指向プログラム言語としてのJavaScript 」サイトを立 ち上げる(1998年5月)  www.tokumaru.orgは、Yahoo!のカテゴリではJavaScriptで登録され ている  1999年頃 お仕事で、JavaScript風のスクリプト言語を作った  GreenScript:ケータイ向けサーバーサイドのスクリプト言語  仮想マシンへのコンパイル、GCはストップ&コピー型  しかし、表面的に似ているだけで、中身はまったく別  レキシカルスコープのみ…(^^;  ケータイコンテンツの作成に使用される 初期メロッチャ etc  その後10年間なにもしてこなかった 3
  3. 3. 携帯電話とJavaScript  1999年のiモード以来、ケータイブラウザではJavaScriptが長らく サポートされていなかった  EZwebは今でもサポートされていない  いわゆるフルブラウザは除く  ここでも話題に取り残されるKDDI  2009年5月22日以降のiモードブラウザ2.0端末ではJavaScriptが サポートされる  ソフトバンクも2010年夏モデルの944SH(2010年6月18日発売)以 公式に対応 降、JavaScriptに対応 「公式に」って? 5
  4. 4. iモードブラウザ2.0の登場 2009年5月19日づけNTTドコモ社の報道発表より http://www.nttdocomo.co.jp/info/news_release/page/090519_00.html より引用 6
  5. 5. ソフトバンクでもJavaScriptに対応 実はちょっと違った http://k-tai.impress.co.jp/docs/news/20100518_367787.html より引用 7
  6. 6. 本当に2010年夏モデルからなのか?  実はかなり以前からソフトバンク端末の一部のモデルで JavaScriptに対応していた  ノキア 702NK(2004年12月発売)では簡単なJavaScriptに対応  XMLHttpRequestやIFRAME、DOMには対応していない  804SS(2006年3月)、910T(2006年10月)、910SH(2006年11月) では、NetFront 3.3によるJavaScript対応  IFRAME、DOMに対応…攻撃に利用できる可能性*1  XMLHttpRequestには対応していない  922SH(2008年3月)では、NetFront 3.4にてAjaxに対応  XMLHttpRequest / setRequetHeaderのサポート  944SH, 945SH(2010年夏)にて正式対応  ユーザエージェントには SoftBank/2.0 とある 注 *1: 804SSはIFRAMEに対応していない 8
  7. 7. ソフトバンク社技術資料より 端末は、ソフトバンク携帯電話向けJavaScript を利用 できる。 ソフトバンク携帯電話向けJavaScript は、Standard ECMA-262 ECMAScript Language Specification 3rd edition[ECMASCRIPT]に準拠したJavaScript に DOM(DOM Level0[JavaScript13], W3C DOM Level1[DOM1], W3C DOM Level2[DOM2CORE] [DOM2EVENT][DOM2HTML][DOM2STYLE])+XML HttpRequest で定義されたインターフェイスを追加し たものである。 http://creation.mb.softbank.jp/docs/A-081-111-BrowserExtension_1.0.1.pdf より引用 9
  8. 8. ケータイJavaScriptの互換性  分かっている非互換性 オレ標準  ドコモの問題  alert、confirm、promptが動かない / setRequestHeaderが動かない いずれも何もしないメソッドに…(2009年11月のJavaScript再開後)  XMLHttpRequestで、上位ディレクトリのファイルは読めない  ソフトバンク/1.0の問題  目立った機能制限無し  setRequestHeaderの制限が緩い(後述)  ソフトバンク/2.0の問題  setRequestHeaderの制限 書き換え可能なヘッダは“x-xhr*”のみ  alert/confirm/promptは使える  制限する理由はセキュリティ対策らしい 10
  9. 9. ドコモのalert停止はXSS対策?  XSS脆弱なスクリプト(本日の唯一のJavaScript) <body> こんにちは<?php echo $_GET['p']; ?>さん </body>  以下のURLで呼び出し http://example.jp/xss.php?p=%3Cscript%3E alert(document.cookie)%3C/script%3E  結果は? 11
  10. 10. ドコモのalert停止はXSS対策? ドコモ(P-07A) ソフトバンク(932SH) 12
  11. 11. ドコモのalert停止はXSS対策? ドコモ(P-07A) ソフトバンク(932SH) XSSは発 動しない XSSが発 動する 13
  12. 12. ドコモのalert停止はXSS対策? ドコモ(P-07A) ソフトバンク(932SH) XSSは発 動しない XSSが発 動する 14
  13. 13. ドコモのalert停止はXSS対策? ドコモ(P-07A) ソフトバンク(932SH) alertが動か XSSは発 ないだけで 動しない XSSは有効 XSSが発 動する 15
  14. 14. ソフトバンクの「XSS対策」も発覚  URLに「<」、「>」、「”」のいずれかの文字がある場合、その文字以 降を削除してWebサーバに送出している http://example.jp/?p=foo<script>alert(document.cookie)</script> ↓ こうなる http://example.jp/?p=foo  しかし、%エンコーディングされている場合はそのまま通すので、 XSS対策にはならない http://example.jp/?p=foo%3cscript%3ealert(document.cookie)%3c/s cript%3e はそのまま通るのでXSS対策としては意味がない  URIとして使用できる文字のみ通すという訳でもなさそう  なぜこういう仕様なのかは謎  すみません。今日はWeb標準の日でした < > ” はURIとして許されない文字なので問題ありません(_ _) 16
  15. 15. setRequestHeaderはどのヘッダを改変してよいか? http://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest より引用・追記 17
  16. 16. 初出:5月27日 http://mb.softbank.jp/mb/information/details/100527.html より引用 18
  17. 17. http://creation.mb.softbank.jp/docs/A-081-111-BrowserExtension_1.0.1.pdf より引用 19
  18. 18. 20
  19. 19. twtr.jpの事例 http://www.tokumaru.org/d/20100222.html#p01 21
  20. 20. Ajax有効な機種のサマリ •ただし、SHARPの最新機種943SHのみは、Refererが送出されるが、改変はできない •△はデフォルトでAjax無効、オプションにより有効化可能(SHARP端末は多いので抜粋) •上記以外のPanasonic、Toshiba等はAjax無効 22
  21. 21. setRequestHeaer制限の副作用  iモード2.0、SoftBank 2.0ともsetRequestHeaderには厳しい制限 が掛かっている  互換性を損なう可能性  POSTリクエストの際に、Content-Typeが指定できなくなる requester.setRequestHeader(“Content-Type” , “application/x-www-form-urlencoded”); → irameで代替  prototype.jsでは、X-Requested-With、X-Prototype-Versionなどの ヘッダを設定している。これらが無効になるので、prototype.jsが使用 できなくなる可能性  Ajaxのセキュリティ対策として、setRequestHeaderを使う場合がある が、使えない(docomo)か、フィールド名を変更(SoftBank)する必要 がある(既存Ajaxアプリ、ライブラリの場合) 23
  22. 22. まとめ  最近のガラケーではJavaScriptが利用できる機種がある  おもに「かんたんログイン」との関係で、JavaScriptには制限がか けられている  ソフトバンクの古い機種には危険な仕様があるが、ユーザに制限 させるという「対策」がとられた  NTTドコモとソフトバンクは、おなじACCESS製のブラウザが搭載 されているがJavaScriptの仕様が違う  JavaScriptの制限が、アプリケーション開発上の制約となる可能 性が高い 24

×