脆弱性

郵便番号入力での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
close icon
EC-CUBEペイメントプラス

決済導入なら、EC-CUBE公式決済

公式決済について詳しく知る

EC-CUBE公式 Amazon Pay

CVRアップの事例多数

Amazon Payについて詳しく知る

無料相談受付中!

アドバイザーに相談する