ã‚°ãƒãƒ¼ãƒãƒ«å¤‰æ•°ã¸ã®ç™»éŒ²ã‚’使用
ã‚»ã‚ュリティをå‘上ã•ã›ã‚‹ãŸã‚ã«ä½¿ç”¨å¯èƒ½ãªPHPã®æ©Ÿèƒ½ã®ä¸€ã¤ã¯ã€
PHPã§register_globals = offを指定ã—ã¦è¨å®šã‚’行ãªã†ã“ã¨ã§ã™ã€‚
ãƒ¦ãƒ¼ã‚¶ãŒæŠ•ç¨¿ã—ãŸå¤‰æ•°ãŒå…¨ã¦PHPコードã«å°Žå…¥ã•れるã“ã®æ©Ÿèƒ½ã‚’
オフã«ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€æ½œåœ¨çš„ãªæ”»æ’ƒè€…ãŒæ”»æ’ƒã§ãã‚‹å¤‰æ•°ã®æ•°ã‚’
減らã™ã“ã¨ãŒå¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€æŠ•稿を作æˆã™ã‚‹ãŸã‚
ã«ã‚ˆã‚Šå¤šãã®æ™‚é–“ã‚’è¦ã—ã€å†…部変数ã¯ãƒ¦ãƒ¼ã‚¶ã«ã‚ˆã‚ŠæŠ•ç¨¿ã•れãŸãƒ‡
ータã‹ã‚‰åŠ¹çŽ‡çš„ã«éš”離ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚
ã“ã®å ´åˆã€PHPã§å‹•作ã•ã›ã‚‹ãŸã‚ã«å¿…è¦ãªã‚³ãƒ¼ãƒ‰ã®é‡ã¯è‹¥å¹²å¢—åŠ
ã—ã¾ã™ãŒã€ãã®åˆ©ç›Šã¯åŠªåŠ›ã‚’ä¸Šå›žã‚‹ã¨è°è«–ã•れã¦ã„ã¾ã™ã€‚
例 5-14register_globals=offを指定ã—ãªã„å ´åˆã®å‹•作 <?php
if ($username) { // get/post/cookiesã§ä¸Šæ›¸ãã•れるå¯èƒ½æ€§ãŒã‚ã‚‹
$good_login = 1;
}
if ($good_login == 1) { // get/post/cookiesã§ä¸Šæ›¸ãã•れるå¯èƒ½æ€§ãŒã‚ã‚‹
fpassthru ("/highly/sensitive/data/index.html");
}
?> |
|
例 5-15register_globals = offを指定ã—ãŸå ´åˆã®å‹•作 <?php
if($HTTP_COOKIE_VARS['username']){
// クッã‚ーã‹ã‚‰æ¥ã‚‹ã‚‚ã®ã®ã¿
$good_login = 1;
fpassthru ("/highly/sensitive/data/index.html");
}
?> |
|
ã“れを賢ã使用ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€å½ã®å…¥åŠ›ãŒè©¦ã¿ã•れãŸéš›ã«è¦å‘Šã‚’
発生ã™ã‚‹é˜²æ¢ç–ã‚’ã¨ã‚‹ã“ã¨ã•ãˆå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚変数ãŒå…¥åŠ›ã•れる
å ´æ‰€ã‚’äº‹å‰ã«æ£ã—ã知ã£ã¦ã„ã‚‹å ´åˆã€æŠ•稿ã•れãŸãƒ‡ãƒ¼ã‚¿ãŒé©å½“ãªå ´
所ã‹ã‚‰ã®ã‚‚ã®ã§ã‚ã‚‹ã‹ã‚’調ã¹ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ã“れã¯ã€ãƒ‡ãƒ¼ã‚¿ãŒ
å½é€ ã•れã¦ã„ãªã„ã“ã¨ã‚’ä¿è¨¼ã™ã‚‹ã‚‚ã®ã§ã¯ã‚りã¾ã›ã‚“ãŒã€æ”»æ’ƒè€…ã«
æ£ã—ã„å½é€ ã®æ–¹æ³•を推定ã™ã‚‹ã“ã¨ã‚’å¼·ã„ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚
例 5-16ç°¡å˜ãªå¤‰æ•°ã®æ±šæŸ“ã®æœ‰ç„¡ã®æ¤œå‡º <?php
if ($HTTP_COOKIE_VARS['username'] &&
!$HTTP_POST_VARS['username'] &&
!$HTTP_GET_VARS['username'] ) {
// ユーザåã‚’èªè¨¼ã™ã‚‹ä»–ã®æ‰‹æ®µã‚’実行ã™ã‚‹
$good_login = 1;
fpassthru ("/highly/sensitive/data/index.html");
} else {
mail("admin@example.com", "侵入ãŒè©¦ã¿ã‚‰ã‚Œã¾ã—ãŸ", $HTTP_SERVER_VARS['REMOTE_ADDR']);
echo "管ç†è€…ã«ã‚ˆã‚‹è¦å‘Šï¼šã‚»ã‚ュリティé•åã§ã™ã€‚";
exit;
}
?> |
|
ã‚‚ã¡ã‚ã‚“ã€register_globalsã‚’offã«å¤‰ãˆãŸã ã‘ã§ã¯ã€ã‚³ãƒ¼ãƒ‰ãŒå®‰å…¨ã§ã‚ã‚‹
ã“ã¨ã‚’æ„味ã—ã¾ã›ã‚“。投稿ã•れãŸãƒ‡ãƒ¼ã‚¿ã®ã‚らゆる部分ã«ã¤ã„ã¦ã€ä»–ã®
手段ã§ã‚‚確èªã™ã‚‹å¿…è¦ãŒã‚りã¾ã›ã‚“。