Changeset 14950


Ignore:
Timestamp:
2007/06/28 11:16:33 (13 years ago)
Author:
adati
Message:

CSRF対策:sfIsSuccess()を修正、リファラのチェックをするようにした

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/rel/data/lib/slib.php

    r13588 r14950  
    341341            $objPage->tpl_error="¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï¥¢¥¯¥»¥¹¸¢¸Â¤¬¤¢¤ê¤Þ¤»¤ó¡£<br />¤â¤¦°ìÅÙ¤´³Îǧ¤Î¤¦¤¨¡¢ºÆÅÙ¥í¥°¥¤¥ó¤·¤Æ¤¯¤À¤µ¤¤¡£"; 
    342342            break; 
    343         case PAGE_ERROR: 
     343        case INVALID_MOVE_ERRORR: 
    344344            $objPage->tpl_error="ÉÔÀµ¤Ê¥Ú¡¼¥¸°ÜÆ°¤Ç¤¹¡£<br />¤â¤¦°ìÅÙ¤´³Îǧ¤Î¤¦¤¨¡¢ºÆÅÙÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£"; 
    345345            break; 
     
    474474        return false; 
    475475    } 
    476     return true;         
     476    // ¥ê¥Õ¥¡¥é¡¼¥Á¥§¥Ã¥¯(CSRF¤Î»ÃÄêŪ¤ÊÂкö) 
     477    // ¡Ö¥ê¥Õ¥¡¥é̵¡× ¤Î¾ì¹ç¤Ï¥¹¥ë¡¼ 
     478    // ¡Ö¥ê¥Õ¥¡¥éÍ­¡× ¤«¤Ä ¡Ö´ÉÍý²èÌ̤«¤é¤ÎÁ«°Ü¤Ç¤Ê¤¤¡× ¾ì¹ç¤Ë¥¨¥é¡¼²èÌ̤òɽ¼¨¤¹¤ë 
     479    if ( empty($_SERVER['HTTP_REFERER']) ) { 
     480        // ·Ù¹ðɽ¼¨¤µ¤»¤ë¡© 
     481        // sfErrorHeader('>> referrer¤¬Ìµ¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£'); 
     482    } else { 
     483        $domain  = sfIsHTTPS() ? SSL_URL : SITE_URL; 
     484        $pattern = sprintf('|^%s.*|', $domain . 'admin/'); 
     485        $referer = $_SERVER['HTTP_REFERER']; 
     486 
     487        // ´ÉÍý²èÌ̤«¤é°Ê³°¤ÎÁ«°Ü¤Î¾ì¹ç¤Ï¥¨¥é¡¼²èÌ̤òɽ¼¨ 
     488        if (!preg_match($pattern, $referer)) { 
     489            if ($disp_error) sfDispError(INVALID_MOVE_ERRORR); 
     490            return false; 
     491        } 
     492    } 
     493    return true; 
     494} 
     495 
     496/** 
     497 * HTTPS¤«¤É¤¦¤«¤òȽÄê 
     498 *  
     499 * @return bool 
     500 */ 
     501function sfIsHTTPS () { 
     502    // HTTPS»þ¤Ë¤Ï$_SERVER['HTTPS']¤Ë¤Ï¶õ¤Ç¤Ê¤¤Ãͤ¬Æþ¤ë 
     503    // $_SERVER['HTTPS'] != 'off' ¤ÏIISÍÑ 
     504    if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') { 
     505        return true; 
     506    } else { 
     507        return false; 
     508    } 
    477509} 
    478510 
Note: See TracChangeset for help on using the changeset viewer.