More Related Content
Similar to ガラケーで楽しむオレJSの勧め
Similar to ガラケーで楽しむオレJSの勧め(20)
More from Hiroshi Tokumaru
More from Hiroshi Tokumaru(20)
ガラケーで楽しむオレJSの勧め
- 2. JavaScriptと私
興味をもったのはサイ本(第2版 1997/7)と出会ってのこと
1998年のころと思われる
Aha! なんて面白い言語なんだ!
「オブジェクト指向プログラム言語としてのJavaScript 」サイトを立
ち上げる(1998年5月)
www.tokumaru.orgは、Yahoo!のカテゴリではJavaScriptで登録され
ている
1999年頃 お仕事で、JavaScript風のスクリプト言語を作った
GreenScript:ケータイ向けサーバーサイドのスクリプト言語
仮想マシンへのコンパイル、GCはストップ&コピー型
しかし、表面的に似ているだけで、中身はまったく別
レキシカルスコープのみ…(^^;
ケータイコンテンツの作成に使用される 初期メロッチャ etc
その後10年間なにもしてこなかった
3
- 3. 携帯電話とJavaScript
1999年のiモード以来、ケータイブラウザではJavaScriptが長らく
サポートされていなかった
EZwebは今でもサポートされていない
いわゆるフルブラウザは除く
ここでも話題に取り残されるKDDI
2009年5月22日以降のiモードブラウザ2.0端末ではJavaScriptが
サポートされる
ソフトバンクも2010年夏モデルの944SH(2010年6月18日発売)以
公式に対応
降、JavaScriptに対応
「公式に」って?
5
- 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. ソフトバンク社技術資料より
端末は、ソフトバンク携帯電話向け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. ケータイJavaScriptの互換性
分かっている非互換性 オレ標準
ドコモの問題
alert、confirm、promptが動かない / setRequestHeaderが動かない
いずれも何もしないメソッドに…(2009年11月のJavaScript再開後)
XMLHttpRequestで、上位ディレクトリのファイルは読めない
ソフトバンク/1.0の問題
目立った機能制限無し
setRequestHeaderの制限が緩い(後述)
ソフトバンク/2.0の問題
setRequestHeaderの制限
書き換え可能なヘッダは“x-xhr*”のみ
alert/confirm/promptは使える
制限する理由はセキュリティ対策らしい
10
- 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
- 13. ドコモのalert停止はXSS対策?
ドコモ(P-07A) ソフトバンク(932SH)
alertが動か
XSSは発
ないだけで
動しない
XSSは有効 XSSが発
動する
15
- 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
- 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. まとめ
最近のガラケーではJavaScriptが利用できる機種がある
おもに「かんたんログイン」との関係で、JavaScriptには制限がか
けられている
ソフトバンクの古い機種には危険な仕様があるが、ユーザに制限
させるという「対策」がとられた
NTTドコモとソフトバンクは、おなじACCESS製のブラウザが搭載
されているがJavaScriptの仕様が違う
JavaScriptの制限が、アプリケーション開発上の制約となる可能
性が高い
24