Ticket #2307 (new バグ指摘)

Opened 7 years ago

Last modified 7 years ago

HTTP_URL, HTTPS_URL は $_SERVER['SERVER_NAME'] を参照する

Reported by: nanasess Owned by: somebody
Priority: Milestone: バックログ
Component: その他 Version: 2.12.5
Keywords: Cc:
修正済み: no

Description (last modified by nanasess) (diff)

以下のようにすることで, 特定のホストに依存することがなくなり, www の有無でエラーになる問題も解決できるのではないだろうか?

<?php
define('ROOT_URLPATH', '/');
define('HTTP_URL', 'http://' . $_SERVER['SERVER_NAME'] . ROOT_URLPATH);
define('HTTPS_URL', 'https://' . $_SERVER['SERVER_NAME'] . ROOT_URLPATH);

脆弱性等の問題が無ければ採用したいです.

Change History

comment:1 Changed 7 years ago by nanasess

  • Description modified (diff)

ポート番号も付与できるようにしたいです.

comment:2 follow-up: ↓ 4 Changed 7 years ago by nanasess

クロスサイト系のチェックで引っかかるかも.(スピリット・オブ 川口さん談)

scheme は, インストーラから指定できれば良さそう.

comment:3 Changed 7 years ago by kim

  • Milestone changed from EC-CUBE2.13.0 to バックログ

2.13.0の対応内容を固めていくため、バックログに移動します。

comment:4 in reply to: ↑ 2 Changed 7 years ago by nanasess

クロスサイト系のチェックで引っかかるかも.(スピリット・オブ 川口さん談)

!$_SERVERSERVER_NAME? を参照するようにした環境を IBM AppScan? で検証したが、特に問題になるような脆弱性は発見されなかった。

comment:5 in reply to: ↑ description Changed 7 years ago by Seasoft

開発環境などで、同様の設定をよく使っています。

その中で、cron で値を取れずに困ったことがありました。たしか、 if (strlen($_SERVER['SERVER_NAME']) === 0) 的な方法で対処しました。

# そもそも、この辺りの値の持ち方って、ちょっとスマートじゃないですよね。ROOT_URLPATH を含まない URL を使いたい事もあるし、HTTP_URL に直書きではなく、ホスト名を抽象化とかできると良い気もします。そして、HTTP と HTTPS で別のホスト名を設定できる機能とか捨てて、シンプルにしたい。

Note: See TracTickets for help on using tickets.