O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

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

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 22 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Quem viu também gostou (20)

Anúncio

Semelhante a ガラケーで楽しむオレJSの勧め (20)

Mais de Hiroshi Tokumaru (20)

Anúncio

Mais recentes (20)

ガラケーで楽しむオレ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

×