Webã¢ããªã±ã¼ã·ã§ã³ã®ã»ãã¥ãªãã£å¯¾çã¨ãã¦ã®å ¥åå¤æ¤è¨¼ã«ã¤ãã¦è°è«ããã¦ãã¾ãã
そろそろ入力値検証に関して一言いっとくか: Webアプリケーション脆弱性対策としての入力値検証について - 徳丸浩の日記(2007-09-05)
æã£ããã¨ãããã¤ãæ¸ãã¾ãã
- 徳丸ããã®æ¥è¨ã¯ãã¦ã¼ã¶ãããã¹ãããã¯ã¹ãªã©ã§èªç±ã«å¤ãå ¥åã§ããä½æãªã©ã®ãã¼ã¿ã主ã«å¯¾è±¡ã¨ãããã®ã ã¨æãã
- ãã ãã¦ã¼ã¶ã®èªç±ãªå
¥åãèµ·æºã¨ããªããã¼ã¿ãåå¨ããï¼ããã§ã¯ãã·ã¹ãã èµ·æºã®ãã¼ã¿ãã¨å¼ã¶ï¼ã
- hiddenããªã³ã¯URLã«åãè¾¼ã¾ãã¦ããGETãã©ã¡ã¼ã¿ãCookieãªã©ã«ã¯ããã®æã®ãã¼ã¿ãå ¥ããã¨ãå¤ãã
- ã·ã¹ãã èµ·æºã®ãã¼ã¿ã®å¤ãã¯ãããåã«å¾ããã¨ãæå¾ ããããã®ã§ãååçã«å ¥åå¤æ¤è¨¼ããã¹ããã®ï¼BMPã®ããã¯ã»ã«ããããããæ°ãã¨åããããªæè¦ï¼ã
- ã·ã¹ãã èµ·æºã®ãã¼ã¿ããã¨ã¹ã±ã¼ãããããã°ã¤ã³ã¸ã§ã¯ã·ã§ã³ç³»ã®åé¡ãçããªãå ´åãå¤ãããã ãã¨ã¹ã±ã¼ãæ¹æ³ãåå¨ããªãæèã§ä½¿ç¨ããå ´åããã¨ã¹ã±ã¼ããå°é£ãªãããã»ãã¥ãªãã£å¯¾çã¨ãã¦ã®å
¥åå¤æ¤è¨¼ãå¿
è¦ãªå ´åãããï¼ä¾ãã°ä»¥ä¸ï¼ã
- <a href="*URL*">æ»ã</a> // javascriptã¹ãã¼ãã®æ¿å ¥
- sysopen(IN, "/foo/". *filename*, O_RDONLY);
- $sql="SELECT * FROM FOO ORDER BY \"*ã«ã©ã å*\""; // PostgreSQLãMySQLã§ã¯ã¨ã¹ã±ã¼ãã¯å¯
- system("/foo/bar '*å¼æ°*'"); // ã¨ã¹ã±ã¼ãã¯é¢å
- å
¥åå¤æ¤è¨¼ãã»ãã¥ãªãã£ä¸ã®çç±ã§å¿
é ã¨ãªããããªãã¼ã¿ã¯ããªãã¹ãã¯ã©ã¤ã¢ã³ãå´ã«ä¿åããªãæ¹ãããã
- ç´æ¥çãªã¯ã©ã¤ã¢ã³ãå´ã¸ã®ä¿åãé¿ããããã«ããã¼ã¿ãã³ã¼ãåããæ¹æ³ããããä¾ãã°ãfilename=xxx.txt ã§ã¯ãªããfilename=1 ã®ãããªã³ã¼ããåãåãããµã¼ãå´ã®ã1âxxx.txtãã¨ãããããªå¯¾å¿ä»ã表ãæ¤ç´¢ãã¦å¾ãããå¤ãsysopenãªã©ã«ä½¿ç¨ããã対å¿ä»ã表ã¯DBãè¨å®ãã¡ã¤ã«ã«å ¥ãã¦ãããã¼ãã³ã¼ããã¦ãããï¼ä¿¡é ¼å¢çå ã«ããããããã°ã対å¿ä»ã表ããå¾ãããå¤ãæ¤è¨¼ããå¿ è¦ã¯ãªãï¼ã
- åããããªçå±ã§ããµã¼ãå´ã®ã»ãã·ã§ã³å¤æ°ã«ã·ã¹ãã èµ·æºã®ãã¼ã¿ãå ¥ãã¦ãããã¨ãæå¹ãªç¶æ³ãããã ããã
- MACã§ç¬¬ä¸è ã«ããæ¹ç«ãé²ãæ¹æ³ãããããã¼ã¿ãååãå´ãMACãå«ããã¼ã¿çæè ãå®å ¨ã«ä¿¡é ¼ãããªãã°ãMACã®æ´åæ§æ¤è¨¼ããã¹ããfilenameããæ¤è¨¼ããã«sysopenã«å ¥ãããã¨ãã§ããã
- 対å¿ä»ã表ã¯ããã¼ã¿ã®ããªã¨ã¼ã·ã§ã³ãå¤ããã¾ããã®å¤åã®é »åº¦ãé«ãå ´åãéç¨ã³ã¹ãã®é«ãææ³ã«ãªããå®éã®ã¨ããã¯ãå ¥åå¤æ¤è¨¼ãå¿ è¦ãªãã¼ã¿ãã¯ã©ã¤ã¢ã³ãå´ããååãã®ãç¾å®çãªå ´åã¯ããã
- ã·ã¹ãã èµ·æºã®ãã¼ã¿ã«ã¯ãã·ã¹ãã å¦çï¼å®è£ ï¼ã®é½åã§ã®ã¿åå¨ããæ¥åè¦ä»¶å®ç¾©ã®ã¬ã¤ã¤ã§ã¯åå¨ããæèãããªããã®ãããããã®ãããªãã¼ã¿ã®å ¥åå¤æ¤è¨¼ã¯ãæ¥åè¦ä»¶ã§ã¯ãªããã·ã¹ãã ãã»ãã¥ãªãã£ã®è¦è«ã«åºã¥ããã®ã¨ãããªããã
- ä½ææ¬ãæ²ç¤ºæ¿æ稿æãªã©ãé·ã以å¤ã¯å®å
¨ã«èªç±å
¥åãªæ¥åç³»ãã¼ã¿ã§ãã£ã¦ããæååã¨ãã¦æ±ã以ä¸ã¯ãæåã¨ã³ã³ã¼ãã®å¦¥å½æ§ã®è¦³ç¹ã§ã®æ¤è¨¼ã¯å¿
è¦ã«ãªãã
- æ©ç¨®ä¾åæåãæºå¸¯çµµæåã®åå ¥ãå¶å¾¡ããããä¸æ£ãªæåæçãªã©ãæ¿å ¥ããããã¨ãé²ãç®çã§ã
- ãã®è¾ºã¯æ¥åè¦ä»¶ã¨ãã¦ã®å ¥åå¤æ¤è¨¼ã¨ä½ç½®ä»ãããããããããªãï¼æ¥åè¦ä»¶ãå®ç¾©ããéã«ãã·ã¹ãã ãåãå ¥ããæåã«ã¤ãã¦ã®è¦å®ãæ¼ãããã¨ã¯ããããã©ãï¼ã
- ã¢ããªããä¸ä½ã®ã¬ã¤ã¤ãèªåçã«æåã¨ã³ã³ã¼ãããæ£è¦åããããã¨ãããï¼å ¥åãã¼ã¿å ã®æåããã¦ã¼ã¶ã«ä½ã®æããç¡ãã?ãã«ãªã£ã¦è¿·æãªå ´åãããï¼ã
徳丸ããã¯ãä¸è¨ã¯å¤§ã¾ããªè°è«ã§ãã£ã¦ããã¡ããä¾å¤ã¯ãããããã¨æ¸ããã¦ãã¾ããç§ã¯ä¸»ã«ãã®ãä¾å¤ãã®é¨åã«ã¤ãã¦æ¸ãã¦ã¿ãã¤ããã§ãã