Jslint  の不思議 JSON を検査してみた 11/14/11
Jslint  の不思議 <ul><li>http://jslint.com/ </li></ul><ul><li>The JavaScript Code Quality Tool </li></ul><ul><li>  Douglas Cro...
Jslint  の不思議 <ul><li>こんなのを JSLint で検査すると、 </li></ul><ul><li>{&quot;key&quot;:&quot;data <&quot;} </li></ul>11/14/11
Jslint  の不思議 <ul><li>結果は </li></ul><ul><li>{&quot;key&quot;:&quot;data <&quot;} </li></ul><ul><li>JSON:  good. </li></ul>1...
Jslint  の不思議 <ul><li>こんなのを JSLint で検査すると、 </li></ul><ul><li>{&quot;key&quot;:&quot;data  u003c &quot;} </li></ul>11/14/11
Jslint  の不思議 11/14/11
Jslint  の不思議 <ul><li>結果は </li></ul><ul><li>{&quot;key&quot;:&quot;data  u003c &quot;} </li></ul><ul><li>JSON:  bad. </li><...
Jslint  の不思議 <ul><li>{&quot;key&quot;:&quot;data  u003c &quot;} </li></ul><ul><li>JSON:  bad . </li></ul><ul><li>Error:  P...
JSON の想定外読み出し攻撃への対策 <ul><li>PHP のイタい入門書を読んで Ajax の XSS について検討した (3) ~ JSON 等の想定外読み出しによる攻撃~ (  徳丸浩氏  ) </li></ul><ul><ul><l...
Jslint  の不思議 <ul><li>こんなのを検査すると… </li></ul><ul><li>{&quot;key&quot;: &quot;data <&quot; /*@cc_on@*//*@alert(1)@*/} </li></...
Jslint  の不思議 11/14/11
Jslint  の不思議 <ul><li>{&quot;key&quot;: &quot;data <&quot; /*@cc_on@*//*@alert(1)@*/} </li></ul><ul><li>JSON:  good . </li>...
ところで <ul><li>話は変わって… </li></ul>11/14/11
RFC JSON <ul><li>The application/json Media Type for JavaScript Object Notation (JSON) http://www.ietf.org/rfc/rfc4627 </l...
Do not trust RFC JSON <ul><li>A JSON text can be safely passed into JavaScript's eval() function  (which compiles and exec...
Do not trust RFC JSON <ul><li>This can be quickly determined in JavaScript with two regular expressions and calls to the t...
Do not trust RFC JSON <ul><li>Eaeflnr-u </li></ul><ul><li>裸の  true false  などの記述を許す正規表現 </li></ul>11/14/11
Do not trust RFC JSON <ul><li>Eaeflnr-u </li></ul><ul><li>裸の  true false  などの記述を許す正規表現 </li></ul><ul><li>ということは、 self  も許可...
Do not trust RFC JSON <ul><li>Ye Olde Crockford JSON regexp is Bypassable    ( Minded Security   ) </li></ul><ul><ul><li>h...
Do not trust RFC JSON <ul><li>指導的な文書・仕様に不安な側面がありそう </li></ul><ul><li>困りましたね </li></ul>11/14/11
Upcoming SlideShare
Loading in …5
×

JSlintの不思議(含RFC4627)

1,039 views

Published on

AVTokyo2011
Web-talk資料
JSLintの不思議
hoshikuzu|star_dust
※スッカスカ資料ですみません

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,039
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

JSlintの不思議(含RFC4627)

  1. 1. Jslint の不思議 JSON を検査してみた 11/14/11
  2. 2. Jslint の不思議 <ul><li>http://jslint.com/ </li></ul><ul><li>The JavaScript Code Quality Tool </li></ul><ul><li>  Douglas Crockford </li></ul><ul><li>JSON も検査してくれる。素晴らしい。 </li></ul>11/14/11
  3. 3. Jslint の不思議 <ul><li>こんなのを JSLint で検査すると、 </li></ul><ul><li>{&quot;key&quot;:&quot;data <&quot;} </li></ul>11/14/11
  4. 4. Jslint の不思議 <ul><li>結果は </li></ul><ul><li>{&quot;key&quot;:&quot;data <&quot;} </li></ul><ul><li>JSON: good. </li></ul>11/14/11
  5. 5. Jslint の不思議 <ul><li>こんなのを JSLint で検査すると、 </li></ul><ul><li>{&quot;key&quot;:&quot;data u003c &quot;} </li></ul>11/14/11
  6. 6. Jslint の不思議 11/14/11
  7. 7. Jslint の不思議 <ul><li>結果は </li></ul><ul><li>{&quot;key&quot;:&quot;data u003c &quot;} </li></ul><ul><li>JSON: bad. </li></ul><ul><li>Error: Problem at line 1 character 15: Unexpected ' '. </li></ul>11/14/11
  8. 8. Jslint の不思議 <ul><li>{&quot;key&quot;:&quot;data u003c &quot;} </li></ul><ul><li>JSON: bad . </li></ul><ul><li>Error: Problem at line 1 character 15: Unexpected ' '. </li></ul><ul><li>エスケープさせてください!お願いします。 </li></ul><ul><li>RFCの仕様上、許されているはずです! </li></ul>11/14/11
  9. 9. JSON の想定外読み出し攻撃への対策 <ul><li>PHP のイタい入門書を読んで Ajax の XSS について検討した (3) ~ JSON 等の想定外読み出しによる攻撃~ ( 徳丸浩氏 ) </li></ul><ul><ul><li>http://ux.nu/ElT7f </li></ul></ul><ul><li>JSON のエスケープをどこまでやるか問題 ( 長谷川陽介氏 ) </li></ul><ul><ul><li>http://ux.nu/pbpqw </li></ul></ul>11/14/11
  10. 10. Jslint の不思議 <ul><li>こんなのを検査すると… </li></ul><ul><li>{&quot;key&quot;: &quot;data <&quot; /*@cc_on@*//*@alert(1)@*/} </li></ul>11/14/11
  11. 11. Jslint の不思議 11/14/11
  12. 12. Jslint の不思議 <ul><li>{&quot;key&quot;: &quot;data <&quot; /*@cc_on@*//*@alert(1)@*/} </li></ul><ul><li>JSON: good . </li></ul><ul><li>NOOOOOOOO!!!!!! </li></ul><ul><li>RFCの仕様上、 駄目な はずです! </li></ul>11/14/11
  13. 13. ところで <ul><li>話は変わって… </li></ul>11/14/11
  14. 14. RFC JSON <ul><li>The application/json Media Type for JavaScript Object Notation (JSON) http://www.ietf.org/rfc/rfc4627 </li></ul>11/14/11
  15. 15. Do not trust RFC JSON <ul><li>A JSON text can be safely passed into JavaScript's eval() function (which compiles and executes a string) if all the characters not enclosed in strings are in the set of characters that form JSON tokens. </li></ul>11/14/11
  16. 16. Do not trust RFC JSON <ul><li>This can be quickly determined in JavaScript with two regular expressions and calls to the test and replace methods. </li></ul><ul><li>var my_JSON_object = !(/[^,:{}[]0-9.-+ Eaeflnr-u nrt]/.test( text.replace(/&quot;(.|[^&quot;])*&quot;/g, ''))) && eval('(' + text + ')'); Interoperability considerations: n/a </li></ul>11/14/11
  17. 17. Do not trust RFC JSON <ul><li>Eaeflnr-u </li></ul><ul><li>裸の true false などの記述を許す正規表現 </li></ul>11/14/11
  18. 18. Do not trust RFC JSON <ul><li>Eaeflnr-u </li></ul><ul><li>裸の true false などの記述を許す正規表現 </li></ul><ul><li>ということは、 self も許可している。 </li></ul><ul><li>Window object とかの取得をされるかも? </li></ul><ul><li>ヘタクソな使い方をすればだけど。 </li></ul>11/14/11
  19. 19. Do not trust RFC JSON <ul><li>Ye Olde Crockford JSON regexp is Bypassable   ( Minded Security ) </li></ul><ul><ul><li>http://ux.nu/O3t8u </li></ul></ul><ul><li>{ toString: self [“doSom”], attr:name } </li></ul>11/14/11
  20. 20. Do not trust RFC JSON <ul><li>指導的な文書・仕様に不安な側面がありそう </li></ul><ul><li>困りましたね </li></ul>11/14/11

×