ユーザãŒé€ä¿¡ã—ãŸãƒ‡ãƒ¼ã‚¿
多ãã®PHPã§æœ€ã‚‚脆弱ãªéƒ¨åˆ†ã¯ã€è¨€èªžè‡ªä½“ã«èµ·å› ã™ã‚‹ã‚‚ã®ã§ã¯ãªãã€å˜ã«
ã‚»ã‚ュリティを考慮ã—ã¦æ›¸ã‹ã‚Œã¦ã„ãªã„コードã®å•é¡Œã§ã™ã€‚ã“ã®åŽŸå› ã«ã¤
ã„ã¦ã€æŒ‡å®šã—ãŸã‚³ãƒ¼ãƒ‰ã®éƒ¨åˆ†ã®æ„味を常ã«æ™‚é–“ã‚’ã‹ã‘ã¦åŸå‘³ã—ã€äºˆæƒ³å¤–ã®
変数ãŒæŠ•ç¨¿ã•ã‚ŒãŸå ´åˆã«æœ‰ã‚Šå¾—ã‚‹æ害を確ã‹ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
例 5-17å±é™ºãªå¤‰æ•°ã®ä½¿ç”¨ <?php
// ユーザã®ãƒ›ãƒ¼ãƒ ディレクトリã‹ã‚‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’削除ã—ã¾ã™... ã¾ãŸã¯ä»–ã®èª°
// ã‹ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‹ã‚‚?
unlink ($evil_var);
// 彼らã®ã‚¢ã‚¯ã‚»ã‚¹ã®ãƒã‚°ã‚’書ã込む.. ã¾ãŸã¯é•ã†ã‹ã‚‚?
fputs ($fp, $evil_var);
// 何ã‹ã¡ã‚‡ã£ã¨ã—ãŸã“ã¨ã‚’実行.. ã¾ãŸã¯ rm -rf *?
system ($evil_var);
exec ($evil_var);
?> |
|
常ã«æ³¨æ„ã—ã¦ã‚³ãƒ¼ãƒ‰ã‚’テストã—ã€Webブラウザã‹ã‚‰æŠ•ç¨¿ã•ã‚ŒãŸå…¨ã¦ã®å¤‰æ•°
ã«ã¤ã„ã¦æ¬¡ã®ã‚ˆã†ãªç‚¹ã‚’確èªã—ã¦ä¸‹ã•ã„。
ã“ã®ã‚¹ã‚¯ãƒªãƒ—トã¯ã€æ„図ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã®ã¿ã‚’å—ã‘付ã‘ã‚‹ã‹?
例外的ãªã¾ãŸã¯æ„図ã—ãŸã‚‚ã®ä»¥å¤–ã®ãƒ‡ãƒ¼ã‚¿ã«ã‚ˆã‚Šå®Ÿè¡Œã™ã‚‹ã“ã¨ãŒå¯èƒ½
ã‹?
ã“ã®ã‚¹ã‚¯ãƒªãƒ—トã¯æ„図ã—ãŸä»¥å¤–ã®æ–¹æ³•ã§ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã‹?
ã“ã®ã‚¹ã‚¯ãƒªãƒ—トã¯ã€æ‚ªã„æ„味ã§ä»–ã®ã‚¹ã‚¯ãƒªãƒ—トã¨çµ„ã¿åˆã‚ã›ã¦ä½¿ç”¨ã™
ã‚‹ã“ã¨ãŒå¯èƒ½ã‹?
トランザクションã¯é©åˆ‡ã«è¨˜éŒ²ã•ã‚Œã¦ã„ã‚‹ã‹?
スクリプトを書ã„ãŸå¾Œã§ã¯ãªãã€æ›¸ã„ã¦ã„る時ã«ã“れらã®è³ªå•ã‚’é©å®œè¡Œã†
ã“ã¨ã«ã‚ˆã‚Šã€ã‚»ã‚ュリティ改善ã®ãŸã‚ã«ä¸å¹¸ã«ã—ã¦æ›¸ãç›´ã—ãŒå¿…è¦ã«ãªã‚‹
ã¨ã„ã†ã“ã¨ã‚’é¿ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã†ã—ãŸè€ƒæ…®ã‚’ã¾ãšè¡Œã†ã“ã¨ã«ã‚ˆã‚Šã€
システムã®ã‚»ã‚ュリティをä¿è¨¼ã§ãã‚‹ã‚ã‘ã§ã¯ã‚ã‚Šã¾ã›ã‚“ãŒã€æ”¹å–„ã®ä¸€åŠ©
ã«ã¯ãªã‚Šãˆã¾ã™ã€‚
register_globals,magic_quotes, ã¾ãŸã¯ä»–ã®ä¾¿åˆ©ãªè¨å®šã¯ã€æœ‰åŠ¹æ€§ã€ç™º
ä¿¡å…ƒã€æŒ‡å®šã—ãŸå¤‰æ•°ã®å€¤ã«ã¤ã„ã¦æ··ä¹±ã‚’生ã˜ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€è¨å®šã‚’
オフã«ã—ãŸã„ã¨æ€ã†ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。error_reporting(E_ALL) モードã§
PHPを動作ã•ã›ãŸå ´åˆã€ç¢ºèªã¾ãŸã¯åˆæœŸåŒ–ã™ã‚‹å‰ã«ä½¿ç”¨ã•ã‚ŒãŸå¤‰æ•°ã«é–¢ã—
ã¦è¦å‘Šã‚’発生ã•ã›ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚(ã“ã‚Œã«ã‚ˆã‚Šã€å‡¦ç†æ™‚ã«é€šå¸¸ã¨ã¯ç•°
ãªã‚‹ãƒ‡ãƒ¼ã‚¿ã‚’防æ¢ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™)