HTML5ã¯ãã€ã³ã¿ãŒãããããŒã¯ã¢ããèšèªã®å°æ¥ã®æšæºã§ãã ãã©ããæ®µéã§ã¯ãããŸããããã®æ©èœã®å€ãã¯äžè¬çãªWebãã©ãŠã¶ãŒã§å®çŸãããŠããŸãã ããããéåžžèµ·ããããã«ãæ°ãããã¯ãããžãŒã«ã¯ãæªçšãããå¯èœæ§ã®ããæ°ããå±éºã䌎ããŸãã
HTML5ïŒç°¡åãªèŠçŽ
å€ãã®äººã¯ãããŒãžã«ãããªæè¡ãåã蟌ãããã®ã³ãŒããã¯ã®å¯Ÿç«ã«ã€ããŠãã§ã«èããããšãããã§ãããã <video>ã¿ã°ã䜿çšãããšã眮ãæããããªããšããŠããå°ãªããšãçå£ã«Adobe Flashãšç«¶åãããšæ³å®ãããŸãã HTML5ã«ã€ããŠã®äŒè©±ãå§ããŠããã®é©æ°ã¯ãã°ãã°èšæ¶ãããŠããŸãã ããã§ãïŒYoutubeãVimeoãªã©ã®ãããªãã¹ãã£ã³ã°ã®å·šäººã¯ããã§ã«æ°ãããã¯ãããžãŒã®ãµããŒããå®è£
ããŠããŸãã ãŸããAppleã®ã¢ãã€ã«è£œåã¯ãFlashã®å
¬åŒãµããŒãããªãã£ããããFlashãæ¢ã«ç©æ¥µçã«äœ¿çšããŠããŸããã ãããã£ãŠã<video>ã¿ã°ã䜿çšããŠããŒãžã«æ¿å
¥ãããã¹ããªãŒãã³ã°ãããªã¯ãä»ããã«æããããšãã§ããŸãã
HTML5ãæäŸãããã®ä»ã®ã䟿å©ãªæ©èœãã«ã¯ã匷調ãã䟡å€ããããŸãã
- ãã©ãŠã¶ã®ããªãã©ã€ã³ãããŒã¿ã¹ãã¬ãŒãž-Webã¹ãã¬ãŒãžãããŒã«ã«ããŒã¿ããŒã¹ã
- Canvas 2D API;
- ã¯ãã¹ãã¡ã€ã³ã€ã³ã¿ã©ã¯ã·ã§ã³ïŒã¯ãã¹ãã¡ã€ã³ã¡ãã»ãŒãžã³ã°ïŒ;
- ããã©ãã°ã¢ã³ããããããæ©èœã
- Webãœã±ããã䜿çšããŠãããã¯ãŒã¯ãæäœããŸãã
- ãã±ãŒã·ã§ã³ã®æ±ºå®ïŒãžãªãã±ãŒã·ã§ã³ïŒã
Webã¹ãã¬ãŒãž-Cookieã®åŒ·åãªä»£æ¿ææ®µ
Webã¢ããªã±ãŒã·ã§ã³ïŒGmailãªã©ïŒã®æä»£ã®å°æ¥ã«ãããWebãã©ãŠã¶ãŒã®åŽã«ããŒã¿é
åãä¿åããå¿
èŠããã£ããšããäºå®ã«ã¯é©ãã¹ãããšã¯äœããããŸããã ãã®é¡èãªäŸã¯ããã®ãããªWebã¢ããªã±ãŒã·ã§ã³ããªãã©ã€ã³ã§äœ¿çšã§ããããã«ãã詊ã¿ã§ãã Googleã¯Google Gearsãã¯ãããžãŒã§å€§ããªé²æ©ãéããŸããã å¶éïŒç¹ã«4Kãµã€ãºïŒãåããCookieãšãããã䜿çšããæ¹æ³ã¯ãæããã«ãã®ãããªã¿ã¹ã¯ã«ã¯äžé©åã§æä»£é
ãã®ãœãªã¥ãŒã·ã§ã³ã§ãã ãã®ãããCookieã«äŒŒãæ°ããã¡ã«ããºã ãéçºããããšã«ããŸããããCookieã®æ¬ ç¹ã¯ãããŸããã ãããã¯WebStorageãã¯ãããžãŒã«ãªããŸããã ã€ãŸããHTML5ã®ãããã§ãJavaScriptããã¢ã¯ã»ã¹ã§ããWebãã©ãŠã¶ãŒã®åŽé¢ã«ãããŒå€ãã¿ã€ãã®ãªããžããªïŒãŸãã¯2ã€ã®ãªããžããªïŒãã§ããŸããã
- localStorage-é·æããŒã¿ã¹ãã¬ãŒãžçšã
- sessionStorage-ã»ãã·ã§ã³ã§äœ¿çšããŸãã
ãã®ã¡ã«ããºã ã¯ãã»ãšãã©ãã¹ãŠã®Webãã©ãŠã¶ãŒïŒFirefox 3.5ãSafari 4.0ãIE8ãGoogle ChromeãOpera 10.50ïŒã§ãµããŒããããŠããŸãã 以äžã¯ãããŒã«ã«Webã¹ãã¬ãŒãžã䜿çšããŠWebããŒãžãžã®èšªåè
ã远跡ããå
žåçãªäŸã§ãã
<p> <span id="count">- </span> .</p> <script> if (!localStorage.pageLoadCount) localStorage.pageLoadCount = 0; localStorage.pageLoadCount += 1; document.getElementById('count').textContent = localStorage.pageLoadCount; </script>
ãã®æè¡ã®ã»ãã¥ãªãã£é¢ãèŠãŠã¿ãŸãããã JS APIã®å€ãã®ããšãšåæ§ã«ãHTML5ã¯HTML5 Originã¡ã«ããºã ã«åŸããŸããã€ãŸãããããã³ã«ãšããŒãçªå·ïŒ
example.comïŒ80ãªã©ïŒãèæ
®ããŠãåããã¡ã€ã³ã®ãã¹ãŠã®ããŒãžã§ããŒã¿ã䜿çšã§ã
ãŸã ã äžèšã®ããã«ãWebã¹ãã¬ãŒãžã¯4Kã®å¶éããè§£æŸããã仿§ã§ã¯ãã¡ã€ã³ããšã«5 MBã䜿çšããããšãæšå¥šããŠããŸãã å®éãFirefoxãSafariãOperaãGoogle Chromeã®å Žåãå¶éã¯5MBãIEã®å Žåã¯10MBã§ãã ããããæãè峿·±ãã®ã¯ã¯ã©ãŒã¿èªäœã§ã¯ãªãããã©ãŠã¶ãããããã©ã®ããã«äœ¿çšãããã§ãã
ããšãã°ãFirefoxã«ã¯.example.comã®å¶éããããŸãã ãããã£ãŠãïŒãããŠããã§æ³šæïŒïŒ1ã€ã®ãµããã¡ã€ã³ã¯ããã¡ã€ã³çšã«äºçŽãããå Žæãå®å
šã«å ããããšãã§ããŸãã
éåšãããã«ãã€ãããªãããã§ã¯ãããŸããã ãã®Webãã©ãŠã¶ãŒã§ã¯ãnullãã€ããlocalStorageããŒã«æ¿å
¥ãããšãFirefoxãå¿ããããŸãã èšãæããã°ãå Žæã¯ã1Bã ããå æããŠããŸããããWebãã©ãŠã¶ã¯ãããèæ
®ããŠããŸããã ãäºçްãªããšã§ãããçŽ æŽããããïŒcïŒã
ç¶ããŸãããã Google Chromeã¯ãã¡ã€ã³ã®å¶éã«ã€ããŠããå¶éçãªãã®ã«ããããšããŠãããå¶éãèšç®ããéã«ãã¡ã€ã³ãèæ
®ãããŸãã ãããåæã«ãGoogle Chromeã§ã¯ããã£ã¹ã¯ã¹ããŒã¹ããã¹ãŠ*ãã¹ãŠ*䜿çšããŠãã¯ã€ã«ãã«ãŒããã¡ã€ã³ã«å€§éã®ã¡ãŒã«ãã¬ãŒã ãäœæã§ããŸãã
for(var i=0; i<10; i++) { var iframe = document.createElement('iframe'); iframe.src = 'http://'+randomString()+'.example.com/ddos.html'; document.body.appendChild(iframe); }
ãã®ãã°ã¯ãŸã ä¿®æ£ãããŠããŸããã ç¹ã«ã次ã®ãããªå€ãåé¡ãCookieããæ°ããçš®é¡ã®ã¹ãã¬ãŒãžã«ç§»è¡ããŸããã
- ãŠãŒã¶ãŒè¿œè·¡
- DNSã¹ããŒãã£ã³ã°æ»æã
ã¢ã¯ã»ã¹å¶éã®æ§è³ªïŒãããã³ã«+ãã¡ã€ã³+ããŒãïŒã«ãããexample.com /ãuser /ã·ã¹ãã ã䜿çšãããã¹ãã£ã³ã°ãµãŒãã¹ã«ãåé¡ããããŸãã ã¯ããé·ãéãç§ãã¡ã¯äººçã§åæ§ã®ãã¹ãã£ã³ã°ãèŠãŠããŸããã§ããããçªç¶ïŒ
ãŸããWebã¹ãã¬ãŒãžã®å¥ã®éèŠãªæ©èœã«æ³šç®ãã䟡å€ããããŸããCookieãšã¯ç°ãªããéåžžã®HTTPèŠæ±ã®äžéšãšããŠãµãŒããŒã«éä¿¡ããããã®ã¯ãããŸããã ããŒã¿ã«ã¯ãJS APIãä»ããŠWebãã©ãŠã¶ããã®ã¿ã¢ã¯ã»ã¹ã§ããŸãã Webã¢ããªã±ãŒã·ã§ã³ã®ã»ãšãã©ã®äœæ¥ãWebãã©ãŠã¶ãŒåŽã«è»¢éããä»ã®ãã¯ãããžãŒãšåæ§ã«ãããã¯XSSã®ãããªåŸæ¥ã®è匱æ§ã«ãããªã¹ã¯ãé«ããŸãã ãŸããCookieã以åã«çãŸããå ŽåãããããããããããŒã¿ãçãçµ¶å¥œã®æ©äŒãããã5 MBã§ãããã®å€ããåããããšãã§ããŸãïŒ ãã ããã»ãã·ã§ã³Cookieã®å ŽåãHTTPOnly屿§ã䜿çšããŠJavaScriptã§å¯çšæ§ã倧å¹
ã«äœäžãããããšãå¯èœã«ãªããŸããã ãã ããWebStorageã®å Žåããã®ãããªã¡ã«ããºã ã¯æäŸããããã¢ã¯ã»ã¹ã¯å®äºããŸãã
Webãã©ãŠã¶ãŒã§ã®SQLã€ã³ãžã§ã¯ã·ã§ã³
ããŒã¿ã¹ãã¬ãŒãžã«ã€ããŠèª¬æããŠããã®ã§ãããã«é«åºŠãªããŒã«ãã€ãŸããã©ãŠã¶ã§çŽæ¥Web-SQLããŒã¿ããŒã¹ãæãåºããŠã¿ãŸãããïŒ ãããSQLiteã«ããŠã¿ãŸãããããããããã¯ãã§ã«è¯ãã§ãïŒ ããŒã¿ããŒã¹ãžã®ã¯ãšãªãå®è¡ããããã®ç¹å®ã®æ§æãè©³çŽ°ã«æ€èšããã®ã§ã¯ãªããIDã«é¢ããæžç±ã«é¢ããæ
å ±ã衚瀺ããã ãã®æ¬¡ã®ã³ãŒããããã«æ€èšããŸãã
function showById() { var pos = document.URL.indexOf("book=")+5; var bookId = document.URL.substring(pos,document.URL.length); var author = ''; var title = ''; db.transaction(function(tx) { tx.executeSql("SELECT * FROM books WHERE id = " + bookId, [], function(tx, result){ if ( result.rows.length > 0) { document.getElementById('bookAuthor').textContent =result.rows.item(0)['author']; document.getElementById('bookTitle').textContent = result.rows.item(0)['title']; } }, function(tx, error){}); }); }
ãããŠã次ã®ãããªäœæã«è¡ããšã©ããªããŸããïŒ
target.com/html5/websql.html?book=1/**/AND/**/1=2
DOMXSS + SQLã€ã³ãžã§ã¯ã·ã§ã³ãå
¥æããŠãã ããïŒ ãã®è匱æ§ã䜿çšããå¯èœæ§ãéåžžã«å°ããããšã¯æ®å¿µã§ãïŒãšããã§ãOxodã¯SQLiteãžã®ã€ã³ãžã§ã¯ã·ã§ã³ã«ã€ããŠã®è¯ãèšäºãæžããŠããŸãã以äžã®ãªã³ã¯ãæ¢ããŠãã ããïŒã ç¹ã«ãOperaãšChromeã®äž¡æ¹ããµã€ãã®sqlite-baseãå¥ã
ã®ãã¡ã€ã«ã«ä¿åããããšãèæ
®ããŠãã ããã ãã¡ãããèè
ã¯æ©äŒãæäŸãããå®å
šãªããã©ã¡ãŒã¿åãããSQLã¯ãšãªãå®è¡ããããšããå§ãããŸãã ããããéçºè
ãã©ã®ããã«ã¢ããã€ã¹ã«åŸãã®ãèŠãŠã¿ãŸãããã ãšããããweb-SQLããŒã¿ããŒã¹ã¯ãlocalStorageããã³sessionStorageãšåãåé¡ãç¹åŸŽãšããŠããŸãã
æ°ããã¿ã°ãšå±æ§-IDSããã³WAF眲åããŒã¿ããŒã¹ã®æŽæ°
HTML5ã¯æ°ããã¿ã°ãšå±æ§ã远å ããŸãã-ããã¯ããªãã®WAFã«ãŒã«/眲åãæŽæ°ããæãæ¥ãããšãæå³ããŸãïŒ2009幎10æå·ã®èšäº
ãBurning Defense Wallsãã§Webã¢ããªã±ãŒã·ã§ã³ã®ãã¡ã€ã¢ãŠã©ãŒã«ã«ã€ããŠè©³ããæžããŸããïŒã æ°ããããŒã¯ã¢ããèŠçŽ ã®1ã€ã¯ããªãŒããã©ãŒã«ã¹å±æ§ã§ãã ããã¯ããªãåŸ
æã®å±æ§ã§ããããã¯ãã»ãšãã©ã®å Žåã以åããJavaScriptãªãŒããã©ãŒã«ã¹åŠçãè¡ãå¿
èŠããã£ãããã§ãã ãããŠæåŸã«ãHTML5ã§ã¯ãç¹å®ã®ããã¹ããã£ãŒã«ãã«ãªãŒããã©ãŒã«ã¹ããããã®å±æ§ã远å ããŸããã ããããã³ãŒããèªåçã«å®è¡ããæ¹æ³ãšããŠãã®å±æ§ã䜿çšããããšãæ³åããŠã¿ãŸãããã
<input onfocus=alert(1) autofocus> <input onblur=write(1) autofocus><input autofocus>
ãã®ææ³ã¯ãããšãã°å±±æ¬åŒ§ããã£ã«ã¿ãªã³ã°ããå Žåã«åœ¹ç«ã¡ãŸãã 仿¥æ¢ã«èª¬æãã<video>ã¿ã°ã¯ããã«ãã¡ãã£ã¢æ©èœã«å ããŠãposter屿§ãä»ããŠJavaScriptã³ãŒãïŒèª°ã:)ãå®è¡ããå¯èœæ§ããããŸãã
<video poster=javascript:alert(1)// <video><source onerror="javascript:alert(1)">
<video>ã®ãã¡ãªãããã«ã¯ãWebãã©ãŠã¶ãŒãæ£ç¢ºã«èå¥ããæ©èœãå«ãŸããŸãã
Metasploit Decloak貯éç®±ã®ãã1ã€ã®ããªãã¯ã«ãªããŸãã æ°ããèŠçŽ ã䜿çšããäŸãç¶ç¶ã§ããŸãã ããšãã°ãonscrollã¿ã°ãã³ãã©ãŒãšåãautofocus屿§ã䜿çšããJavaScriptã®èªå·±å®è¡ã¯ã©ãã§ããïŒ
<body onscroll=alert(1)><br><br><br>...<br><input autofocus>
ãŸãã¯ããããŸã§ã®Operaã®ææ°ããŒãžã§ã³ã§ã®ã¿æ©èœãããã®ã®ãå¥ã®ããªãã¯ããããŸãã
<form id="test" /><button form="test" formaction="javascript:alert(1)">
æ°ããã¿ã€ãã®ãã©ãŒã ãã£ãŒã«ã
HTML5ã§ã¯ãæ°ããã¿ã°ãšå±æ§ã«å ããŠãWebã¢ããªã±ãŒã·ã§ã³ãšãŠãŒã¶ãŒãšã®ããåãã«å€ãã®æ³šæãæããã倿°ã®ã¿ã€ãã®å
¥åããã¹ããã£ãŒã«ãã远å ãããŸããdatetimeãdatetime-localãdateãmonthãtimeãweekãnumberãrangeãemailãurlãsearchã telãã«ã©ãŒã ãããã¯ãéåžžã®ããã¹ããã£ãŒã«ãã«ããå€ãã®æå³ã远å ããããã«èšèšãããŠããŸãã ãã®ãããæ¥ä»ãã£ãŒã«ãã§ã¯ãJavaScriptã§æ¢è£œã®ã«ã¬ã³ããŒã䜿çšããããšãªãã䟿å©ã«æ¥ä»ãéžæã§ããŸãã ã¹ã¿ãããã¹ãã«ç
©ããããããšã¯ãããããŸããã äžè¬çã«ãæåŸã«ãæ
å ±ãå
¥åãããã䟿å©ã§æèçã«é©åãªææ®µã衚瀺ãããŸãã
<style> [required] { background-color: green; } :invalid { background-color: red; } </style> ⊠<input name="email" type="email"/>
ã»ãã¥ãªãã£ã®èгç¹ããéèŠãªã®ã¯ããã£ãŒã«ããèªåèªèº«ãæ€èšŒããããšã§ãïŒ
ãã©ãŒã æ€èšŒ
äžæ¹ã§ã也æ¯-ããªãã¯ãã¯ãRFCã¬ã®ã¥ã©ãŒãæžãå¿
èŠã¯ãããŸããïŒèª°ãããªããããããããã«åã£ãŠããªãããç¹å¥ãªå±æ§ãã¿ãŒã³ã远å ãããŸããïŒããã©ãŒã ããŒã¿ããµãŒããŒã«éä¿¡ããåã«ããäžåºŠJavaScriptãã§ãã¯ãæ°ã«ããŸãã äžæ¹ãWebã¢ããªã±ãŒã·ã§ã³ã®ãµãŒããŒåŽã§ã®æ€èšŒãå¿ããŠã¯ãªããŸããïŒ å¥åŠãªããšã«ããããå®éã«ã¯ããµãŒããŒãã§ãã¯ãå¿ããããããå³å¯ã«å®è£
ãããŠããªãã±ãŒã¹ãå€ãèŠãããŸãã ãåãã®ããã«ãWebãã©ãŠã¶ãŒåŽã§ã®æ€èšŒã¯ç¢ºãã«ä¿¡é Œãã䟡å€ããããŸããã ç¹ã«ãææ°ã®Webã¢ããªã±ãŒã·ã§ã³ã®AJAXéšåãéçºãããšãã«ãç®ããŒããããããšããããŸãã ãããŠãããã«ç§ãæããŠãããã®ããããŸãããã®æ€èšŒãããã«ç°¡çŽ åãããå Žåãéçºè
ã¯ã©ã®ããã«ãããå®å
šã«å¿ããã§ããããïŒ
ã¯ãã¹ããã¥ã¡ã³ãã¡ãã»ãŒãžã³ã°
ã»ãã¥ãªãã£äžã®çç±ãããWebãã©ãŠã¶ãŒã¯ãç°ãªããã¡ã€ã³ã§ãã¹ããããŠããWebã¢ããªã±ãŒã·ã§ã³ã®ã¯ã©ã€ã¢ã³ãéšåã®çžäºäœçšïŒã¢ã¯ã»ã¹ãšããŒã¿äº€æïŒãå¶éããŸãã ã»ãã¥ãªãã£ã®èгç¹ããå¶éãæ¬åœã«å¿
èŠãšæããããšããäºå®ã«ãããããããå Žåã«ãã£ãŠã¯ããã¥ã¡ã³ãéã®å¯Ÿè©±ããã°ãã°å¿
èŠã«ãªããŸãã ããšãã°ãããã¯ãŠã£ãžã§ããæè¡ã«é¢é£ããå ŽåããããŸãã ããã¥ã¡ã³ãéã¡ãã»ãŒãžã³ã°ã·ã¹ãã ã«ãããïŒçæ³çã«ã¯ïŒç°ãªããã¡ã€ã³ã§ãã¹ããããŠããããã¥ã¡ã³ãéã§å®å
šã«ããŒã¿ã亀æã§ããŸããå°ãªããšãFirefoxãšGoogle Chromeã¯æ¢ã«ãµããŒããããŠããŸãã
ãã®ã¡ã«ããºã ã®ä»çµã¿ãæ€èšããŠãã ããã ãµã€ãïŒãŸãã¯ãã®ã¯ã©ã€ã¢ã³ãéšåïŒã®example.com/index.htmlããiframeã«ããŒããããŠããfoo.com/iframe.htmlãšããåãããããšããŸãããã ãã®å Žåãã¡ãã»ãŒãžåä¿¡è
ã¯foo.comã§åæåãããŸãã foo.comã®ã¡ãã»ãŒãžåä¿¡è
ã³ãŒãïŒ
<div id="msg">...</div><script> window.addEventListener('message', receiver, false); function receiver(e) { if (e.origin != 'http://example.com') { return; } document.getElementById('msg').innerHTML = 'Origin: ' + e.origin + ' From: ' + e.source + ' Data: ' + e.data; } </script>
æç€ºçãªéä¿¡è
æ€èšŒïŒe.originïŒã«æ³šæããŠãã ããã ãã ãããã®ãããªãã§ãã¯ãè¡ã£ãŠããããšãã°ä¿¡é Œã§ããéä¿¡è
ã§XSSãçªç¶æ€åºãããå Žåã«åããŠãåä¿¡ããããŒã¿ãæ€èšŒããããšãå¿ããŠã¯ãªããŸããã ãããŠãããã¥ã¡ã³ãïŒã¯ã©ã€ã¢ã³ãåŽïŒa.example.comã§ãåä¿¡è
ã«ã¡ãã»ãŒãžãéä¿¡ããŸãã
function postMsg() { var o = document.getElementById('ifra'); o.contentWindow.postMessage(document.getElementById('msg').value, 'http://foo.com/'); return false; }
ããã§ã¯ãtargetOriginã¡ãã»ãŒãžã®å®å
ãæç€ºçã«æå®ããããšãéèŠã§ãã æšæºã§ã¯ã*ããæå®ããæ©èœãæäŸãããŠããŸããããã®ããããã¹ãŠã®å®å
ã«ã¡ãã»ãŒãžãéä¿¡ã§ããŸãã ç§èŠããã®ã¡ã«ããºã ã®äž»ãªãªã¹ã¯ã¯ãã¡ãã»ãŒãžã³ã°ã®å®å
šãªå®è£
ã®åæã®è€éãã§ãã éçºè
ã¯ãèªåãäœãããŠããããæç¢ºã«çè§£ããå¿
èŠããããŸãã éä¿¡è
ã®æ€èšŒãå¿ãããšããåºæ¬çãªãªã¹ã¯ããããŸãã åä¿¡ããŒã¿ã®ãã©ã€ã³ã䜿çšã¯å±éºãªå ŽåããããDOMããŒã¹ã®XSSã®å£åã«ã€ãªãããŸãã
ããžã·ã§ãã³ã°
çŸåšã®å Žæã¯ãã©ã€ãã·ãŒïŒããã©ã€ãã·ãŒãïŒã®ããªãéèŠãªåŽé¢ã§ããããã现å¿ã®æ³šæãæã£ãŠå€æããããã®ã¡ã«ããºã ãå®è£
ããå¿
èŠããããŸãã ãã®åŽé¢ã¯ãW3C仿§ã®ãã»ãã¥ãªãã£ãšãã©ã€ãã·ãŒã«é¢ããèæ
®äºé
ãã»ã¯ã·ã§ã³ã§èª¬æãããŠããŸãã äžèšã§èšãã°ã仿§ã§ã¯ãå Žæã¯ãµã€ã蚪åè
ã«ãã£ãŠæç€ºçã«èš±å¯ãããå¿
èŠããããšè¿°ã¹ãŠããŸãã æè¡çã«ã¯ãnavigator.geolocationãªããžã§ã¯ãã®ç¹å¥ãªã¡ãœãããåŒã³åºãããšã§å®è£
ãããŸã
if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { var lat = position.coords.latitude; var lng = position.coords.longitude; var options = {position: new google.maps.LatLng(lat, lng) } var marker = new google.maps.Marker(options); marker.setMap(map); }); }
ãã¹ãŠã®äžè¬çãªãã©ãŠã¶ãŒïŒGeolocation APIãå®è£
ãããŠããªãMS Internet Explorerãé€ãïŒã§ã¯ãäœçœ®æ
å ±ã䜿çšããããŒãžã«ã¢ã¯ã»ã¹ãããšãããŒã¿åéã«é¢ããèŠåã衚瀺ããããŠãŒã¶ãŒã«èš±å¯ãæ±ããããŸãã åæã«ãéžæãèšæ¶ãããããµã€ãããã¯ã€ããªã¹ããŸãã¯ãã©ãã¯ãªã¹ãã«ç»é²ãããã§ããŸãã ããã¯ãã¹ã¯ãªãããžã®å®å
šãªãã¹ãå«ãŸãããµã€ãã®ãã¡ã€ã³ãèæ
®ããããšãéèŠã§ã...
å Žæã決å®ããéçšã§ãWebãã©ãŠã¶ãŒã¯IPã¢ãã¬ã¹ãæãè¿ãã¯ã€ã€ã¬ã¹ã¢ã¯ã»ã¹ãã€ã³ããããã³ãã®ä»ã®é¡äŒŒæ
å ±ïŒããšãã°ã2é±éåŸã«æéãåããGoogleã«ãã£ãŠå²ãåœãŠãããã¯ã©ã€ã¢ã³ãã®ã©ã³ãã ãªèå¥åïŒã«é¢ããããŒã¿ãåéãããã¹ãŠã
äœçœ®æ
å ±ãµãŒãã¹ã«éä¿¡ã
ãŸã ã ãããŠä»ãåŠæ³çãªå
åŒãã¡ã¯ãå€ãã®å ŽåïŒGoogle ChromeãFirefoxãOperaïŒã§èª°ããã®ãŸãã«ãµãŒãã¹ã«ãªãã®ããæšæž¬ããŸãïŒ ãããGoogle Location ServicesïŒ ãã¡ãããæ¬¡ã®ããšãçŽæããŸãã
ãMozillaãGoogleããGoogle Location Servicesã«ãã£ãŠåéãããæ
å ±ã䜿çšããŠãŠãŒã¶ãŒãç¹å®ããããšã¯ãªãããŠãŒã¶ãŒãã¹ãã€ããããšããããŸãããã
ãããã誰ãä¿¡é Œã§ããªãããšãããã£ãŠããŸãïŒ :)ãŸããXSSã座æšãåéã§ãããµã€ãã«ããããæ²ããçµæã«ã泚æãæãå¿
èŠããããŸãã
çµè«ãšããŠ
èŠãçµéšããæãã£ãWebã¢ããªã±ãŒã·ã§ã³éçºè
ã¯ãæ¬åœã«è峿·±ãå¿
èŠãªãã¹ãŠã®HTML5ãããã®å®è£
ãæ¥ãã ãã§ãªãã察å¿ãã仿§ã®ã»ãã¥ãªãã£ã»ã¯ã·ã§ã³ãåŠç¿ããããšãæãŸããŸãã Webã¢ããªã±ãŒã·ã§ã³ã®ã»ãã¥ãªãã£ç£æ»ãå®è¡ããããã®åŒ·åã§ç¡æã®ãã¬ãŒã ã¯ãŒã¯ã§ããW3AFãªã©ããã³ãã¹ã¿ãŒåãã®ããŸããŸãªããŒã«ã鲿©ã«å€§ããé
ãããšã£ãŠããªãããšãå¬ããæããŸãã ããªãã®è¬èãªåã¯ãã®ãããžã§ã¯ãã®åå è
ã®äžäººã§ãããWebStorageããã®ä»ã®å±éºãªã³ãŒãã»ã¯ã·ã§ã³ã䜿çšããå ŽæãèŠã€ããããã®ã¢ãžã¥ãŒã«ããã§ã«è¿œå ããŠããŸãã ãã®ããããµã€ãã®æ¬¡ã®ã»ãã¥ãªãã£ç£æ»ã§ãHTML5ããããããã§äœ¿çšãããŠãããã©ããã倿ã§ããŸã:)ã
䟿å©ãªãªã³ã¯ïŒ
Hacker Magazineã 12æïŒ12ïŒ143
ã¿ã©ã¹ããªãã¯ã¹ãããã€ãŽã¡ã·ã¥ãã§ã³ã³
ããããªãŒãçºæãã·ããã
ããã«ãŒã賌èªãã