Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ログの出力で X-Forwarded-For が考慮されていない #88

Open
mattintosh4 opened this issue Jul 7, 2020 · 0 comments
Open
Labels
affected:外部仕様 外部仕様の変更や追加 improvement 機能改善
Milestone

Comments

@mattintosh4
Copy link

概要(Overview)

下記の部分ですが REMOTE_ADDR を返しているためロードバランサー等を使用している環境ではログに出力される IP がすべてロードバランサーの IP になってしまいます。

public function getClientIp()
{
return isset($this->serverData['REMOTE_ADDR']) ? $this->serverData['REMOTE_ADDR'] : null;
}

期待する内容(Expect) or 要望 (Requirement)

X-Forwarded-For が存在する場合は X-Forwarded-For の値を返す方が良いのですが、以下の選択肢が出てくると思います。

, が増えても問題ないのであれば X-Forwarded-For を返す(, でログをパースしている場合に影響が出る可能性あり)

--- /dev/fd/63  2020-06-28 23:29:21.090798138 +0900
+++ src/Eccube/Log/Monolog/Processor/WebProcessor.php   2020-06-28 23:28:21.496937570 +0900
@@ -50,6 +50,9 @@

     public function getClientIp()
     {
+        if (!empty($this->serverData['HTTP_X_FORWARDED_FOR'])) {
+            return $this->serverData['HTTP_X_FORWARDED_FOR'];
+        }
         return isset($this->serverData['REMOTE_ADDR']) ? $this->serverData['REMOTE_ADDR'] : null;
     }

, が増えると問題になる場合は X-Forwarded-For の一番左を返す(一番左にクライアント IP が入っていることを信頼する場合)

--- /dev/fd/63  2020-06-28 23:29:21.090798138 +0900
+++ src/Eccube/Log/Monolog/Processor/WebProcessor.php   2020-06-28 23:28:21.496937570 +0900
@@ -50,6 +50,9 @@

     public function getClientIp()
     {
+        if (!empty($this->serverData['HTTP_X_FORWARDED_FOR'])) {
+           return array_map('trim', explode(',', $this->serverData['HTTP_X_FORWARDED_FOR']))[0];
+        }
         return isset($this->serverData['REMOTE_ADDR']) ? $this->serverData['REMOTE_ADDR'] : null;
     }

ロードバランサー下で使うことを前提としておらず、各々のカスタマイズの範疇ということであればご放念ください。

再現手順(Procedure)

ロードバランサーを使用している環境。

環境 (environment)

  • EC-CUBE: 3.x.x
  • PHP: 7.x.x
  • DB:
    • PostgreSQL x.x.x
    • MySQL x.x.x

関連情報 (Ref)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
affected:外部仕様 外部仕様の変更や追加 improvement 機能改善
Projects
None yet
Development

No branches or pull requests

2 participants