[Tep-j-general] osCsidについて(何度も同じような内容でスイマセン)

Back to archive index

Kenji Okobira okobi****@thecl*****
2007年 12月 11日 (火) 04:54:43 JST


お初にお目にかかります。
いろいろと情報を収集しているうちにこちらにたどり着いたため、初回で失礼かとは思いますが質問させていただきました。

今回oscommerce-2.2ms1jのデザインおよび独自カスタマイズを大幅に行ってクライアントのECサイトを構築いたしました。
現在、catalog以下をすべてSSL通信するように設定し運用している状態になっております。

その際「osCsid=〜」が付きまとい、現状としてセッションハイジャックができてしまう状態になっています。
過去スレを参考にhtml_output.phpやapplication_top.php等を確認したのですが、やはりセッションハイジャックできてしまう状態になっています。
セッションハイジャックのテストは同一グローバルIPおよび別グローバルIPどちらとも確認しました。

このバージョンのosCではこのパラメータをはずしてSSL通信することはできないのでしょうか?
もし方法があるとするならば、どのソースのどの部分を確認すればよろしいでしょうか?

下記にテストサーバのphpinfoのsession部分とhtml_output.phpのカスタマイズ部分を記入します。
(本番サーバの情報はクライアントとの守秘義務によりあげられません・・・モウシワケナイデス)

なお、テストサーバのSSLは独自認証を設定し、本番サーバはベリサインでSSLを設定しております。

<phpinfo>
session.auto_start     Off
session.bug_compat_42     On
session.bug_compat_warn     On
session.cache_expire     180
session.cache_limiter     nocache
session.cookie_domain     thecloud.co.jp
session.cookie_lifetime     0
session.cookie_path     /
session.cookie_secure     Off
session.entropy_file     no value
session.entropy_length     0
session.gc_divisor     100
session.gc_maxlifetime     1440
session.gc_probability     1
session.name     PHPSESSID
session.referer_check     thecloud.co.jp
session.save_handler     files
session.save_path     /tmp
session.serialize_handler     php
session.use_cookies     On
session.use_only_cookies     On
session.use_trans_sid     Off

<html_output.phpの変更部分の抜粋>
// The HTML href link wrapper function
  function tep_href_link($page = '', $parameters = '', $connection = 'SSL', 
$add_session_id = true, $search_engine_safe = true) {
  // Start IN-Solution SpiderKiller
    global $spider_agent, $spider_ip, $spider_checked_for_spider, 
$spider_kill_sid, $HTTP_SERVER_VARS;
  // END IN-Solution SpiderKiller

    if (!tep_not_null($page)) {
      die('</td></tr></table></td></tr></table><br><br><font 
color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine the page 
link!<br><br>');
    }

    if ($connection == 'NONSSL') {
      $link = HTTP_SERVER . DIR_WS_CATALOG;
    } elseif ($connection == 'SSL') {
      if (ENABLE_SSL == true) {
        $link = HTTPS_SERVER . DIR_WS_CATALOG;
      } else {
        $link = HTTP_SERVER . DIR_WS_CATALOG;
      }
    } elseif ($connection == '') {
      // ★空白指定の場合は、現在のSSL 仕様状況を維持
    } else {
      die('</td></tr></table></td></tr></table><br><br><font 
color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine 
connection method on a link!<br><br>Known methods: NONSSL SSL</b><br><br>');
    }

    if (tep_not_null($parameters)) {
      $link .= $page . '?' . tep_output_string($parameters);
      $separator = '&';
    } else {
      $link .= $page;
      $separator = '?';
    }

    while ( (substr($link, -1) == '&') || (substr($link, -1) == '?') ) $link 
= substr($link, 0, -1);

〜中略〜

////
// Output a form pull down menu
  function tep_draw_pull_down_menu_sp($name, $values, $default = '', 
$parameters = '', $required = false) {
    $field = '<select name="' . tep_parse_input_field_data($name, array('"' 
=> '&quot;')) . '"';

    if (tep_not_null($parameters)) $field .= ' ' . $parameters;

    if (tep_parse_input_field_data($name, array('"' => '&quot;')) == 
"id[1]"){
     $field .= ' 
onchange="javascript:reload(\''.tep_href_link(FILENAME_PRODUCT_INFO).'\',\'1\')">';
     $field .= '<option value="0">選択して下さい</option>';
  }else{
     $field .= ' 
onchange="javascript:reload(\''.tep_href_link(FILENAME_PRODUCT_INFO).'\',\'2\')">';
     $field .= '<option value="0">              </option>';
 }
    if (empty($default) && isset($GLOBALS[$name])) $default = 
$GLOBALS[$name];

    for ($i=0, $n=sizeof($values); $i<$n; $i++) {
      $field .= '<option value="' . 
tep_parse_input_field_data($values[$i]['id'], array('"' => '&quot;')) . '"';
      if ($default == $values[$i]['id']) {
        $field .= ' SELECTED';
      }

      $field .= '>' . tep_parse_input_field_data($values[$i]['text'], 
array('"' => '&quot;', '\'' => '&#039;', '<' => '&lt;', '>' => '&gt;')) . 
'</option>';
    }
    $field .= '</select>';

    if ($required == true) $field .= TEXT_FIELD_REQUIRED;

    return $field;
  }

※後半のソース部分は商品のオプションをプルダウン選択に変更し、在庫がない場合はそのプルダウンに表示しないようにカスタマイズしています。

よろしくお願いします。

━━━━━━━━━━━━━━━━━━━━━━━
株式会社クラウド
大河平謙二
okobi****@thecl*****
━━━━━━━━━━━━━━━━━━━━━━━ 




Tep-j-general メーリングリストの案内
Back to archive index