Ignore:
Timestamp:
2007/07/10 22:12:44 (17 years ago)
Author:
adati
Message:

任意のドライブおよび、フォルダの画像ファイル等にアクセスが可能な脆弱性を修正

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/rel/html/resize_image.php

    r13448 r15035  
    55 
    66require_once($include_dir . HTML2DATA_DIR. "lib/gdthumb.php"); 
    7 require_once($include_dir . HTML2DATA_DIR. "conf/conf.php");     
     7require_once($include_dir . HTML2DATA_DIR. "conf/conf.php"); 
    88 
    99$objThumb = new gdthumb(); 
    1010 
    11 $file = $_GET["image"]; 
     11$file = NO_IMAGE_DIR; 
     12 
     13// NO_IMAGE_DIR°Ê³°¤Î¥Õ¥¡¥¤¥ë̾¤¬ÅϤµ¤ì¤¿¾ì¹ç¡¢¥Õ¥¡¥¤¥ë̾¤Î¥Á¥§¥Ã¥¯¤ò¹Ô¤¦ 
     14if ( isset($_GET['image']) && $_GET['image'] !== NO_IMAGE_DIR) { 
     15     
     16    //ÉÔÀµ¤Ê¥Õ¥¡¥¤¥ë̾¤¬ÅϤµ¤ì¤¿¾ì¹ç¤Ï½ªÎ»¤µ¤»¤ë 
     17    if ( lfCheckFileName() !== true ) { 
     18        exit(); 
     19    } 
     20     
     21    $file = IMAGE_SAVE_DIR . $_GET['image']; 
     22} 
     23 
    1224if(file_exists($file)){ 
    13     $objThumb->Main($file, $_GET["width"], $_GET["height"], "", true); 
     25    $objThumb->Main($file, $_GET["width"], $_GET["height"], "", true); 
    1426}else{ 
    15     $objThumb->Main(NO_IMAGE_DIR, $_GET["width"], $_GET["height"], "", true); 
     27    $objThumb->Main(NO_IMAGE_DIR, $_GET["width"], $_GET["height"], "", true); 
     28} 
     29 
     30// ¥Õ¥¡¥¤¥ë̾¤Î·Á¼°¤ò¥Á¥§¥Ã¥¯ 
     31function lfCheckFileName() { 
     32    //$pattern = '|^[0-9]+_[0-9a-z]+\.[a-z]{3}$|'; 
     33    $pattern = '|\.\./|'; 
     34    $file    = trim($_GET["image"]); 
     35    if ( preg_match_all($pattern, $file, $matches) ) { 
     36        return false; 
     37    } else { 
     38        return true; 
     39    } 
    1640} 
    1741 
Note: See TracChangeset for help on using the changeset viewer.