Changeset 15036


Ignore:
Timestamp:
2007/07/11 12:31:03 (13 years ago)
Author:
adati
Message:

パラメータ操作によるリダイレクトが可能となる脆弱性を修正

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/rel/html/frontparts/login_check.php

    r12157 r15036  
    66 */ 
    77require_once("../require.php"); 
     8 
     9// ÉÔÀµ¤ÊURL¤¬POST¤µ¤ì¤¿¾ì¹ç¤Ï¥¨¥é¡¼É½¼¨ 
     10if (isset($_POST['url']) && lfIsValidURL() !== true) { 
     11    gfDebugLog("login_check.php debug \n" . $POST['url']); 
     12    sfDispSiteError(PAGE_ERROR); 
     13} 
    814 
    915$objCustomer = new SC_Customer(); 
     
    2228    $arrErr = $objFormParam->checkError(); 
    2329    $arrForm =  $objFormParam->getHashArray(); 
    24      
    2530    // ¥¯¥Ã¥­¡¼ÊݸȽÄê 
    2631    if ($arrForm['login_memory'] == "1" && $arrForm['login_email'] != "") { 
     
    7378    $objFormParam->addParam("¥Ñ¥¹¥ï¡¼¥É", "login_pass", STEXT_LEN, "", array("EXIST_CHECK", "MAX_LENGTH_CHECK")); 
    7479} 
     80 
     81/* POST¤µ¤ì¤ëURL¤¬¼«¥É¥á¥¤¥ó¤Î¤â¤Î¤«¥Á¥§¥Ã¥¯*/ 
     82function lfIsValidURL() { 
     83    $check_url = trim($_POST['url']); 
     84     
     85    // ¥É¥á¥¤¥ó¥Á¥§¥Ã¥¯ 
     86    $pattern = "|^$site_url|"; 
     87    if (!preg_match($pattern, $check_url)) { 
     88        return false; 
     89    } 
     90 
     91    // CRLF¥Á¥§¥Ã¥¯ 
     92    $pattern = '/\r|\n|%0D|%0A/'; 
     93    if (preg_match_all($pattern, $check_url, $matches)) { 
     94        return false; 
     95    } 
     96     
     97    return true; 
     98} 
     99 
    75100?> 
Note: See TracChangeset for help on using the changeset viewer.