脆弱性

郵便番号入力でのXSS脆弱性

  • 情報公開日:2007年 11月 28日
  • 危険度:中
  • 対象:Ver 1.4.2ベータ未満
-----------------------------------------
脆弱性の種類
------------------------------------------
クロスサイトスクリプティング
-----------------------------------------
脆弱性のあるファイル
-----------------------------------------
html/input_zip.php
-----------------------------------------
対策
-----------------------------------------
57行目
if(count($data_list) > 0) {
$func = "fnPutAddress('" . $_GET['input1'] . "','" . $_GET['input2']. "');";

↓

if(count($data_list) > 0) {
lfCheckInput();
$func = "fnPutAddress('" . $_GET['input1'] . "','" . $_GET['input2']. "');";

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

72行目 
$objErr = new SC_CheckError();

↓

$objErr = new SC_CheckError($_GET);

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
75-77行目
$objErr->doFunc( array("郵便番号1",'zip1',ZIP01_LEN ) ,array( "NUM_COUNT_CHECK" ) );
$objErr->doFunc( array("郵便番号2",'zip2',ZIP02_LEN ) ,array( "NUM_COUNT_CHECK" ) );

↓

$objErr->doFunc( array("郵便番号1",'zip1',ZIP01_LEN ) ,array( "NUM_CHECK", "NUM_COUNT_CHECK" ) );
$objErr->doFunc( array("郵便番号2",'zip2',ZIP02_LEN ) ,array( "NUM_CHECK", "NUM_COUNT_CHECK" ) );

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

下記の関数を追加
function lfCheckInput(){
    $pattern = "/^[0-9a-z_]+$/";
    foreach (array('input1', 'input2') as $key_name) {
        $ret = preg_match_all($pattern, $_GET[$key_name], $matches);
        if (!$ret) {
            $msg = sprintf('invalid param: $_GET[%s]="%s"', $key_name, $_GET[$key_name]);
            gfPrintLog($msg);
            sfDispSiteError('');
        }
    }
}

リビジョン16816で修正
参照URL:http://svn.ec-cube.net/open_trac/changeset/16816

EC-CUBE公式アドバイザー
ご相談窓口

  • 他社のASPやパッケージとの違いを知りたい
  • BtoCのサイトにBtoB機能を追加したい
  • 何から手をつければよいかわからない
  • オープンソースならではの注意事項を知りたい
  • 自社にマッチした制作会社を探したい
  • サイト制作だけでなく運営もサポートしてほしい

新規構築・リニューアル・取引先向けのWeb受発注システム(BtoB)や事業の拡大など、
今抱えている課題を解決する最適な業者探しを、アドバイザーがお手伝いします。