Explorar el Código

Added proxy headers verification (close #5)

Edgard hace 5 años
padre
commit
f1a69e22e0
Se han modificado 1 ficheros con 21 adiciones y 3 borrados
  1. 21 3
      inc/provider.class.php

+ 21 - 3
inc/provider.class.php

@@ -685,10 +685,28 @@ class PluginSinglesignonProvider extends CommonDBTM {
     * @return string
     */
    private function getBaseURL() {
-      $baseURL = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") ? "https://" : "http://";
-      $baseURL .= $_SERVER["SERVER_NAME"];
+      $baseURL = "";
+      if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
+         $baseURL = ($_SERVER["HTTP_X_FORWARDED_PROTO"] == "https") ? "https://" : "http://";
+      } else if (isset($_SERVER["HTTPS"])) {
+         $baseURL = ($_SERVER["HTTPS"] == "on") ? "https://" : "http://";
+      } else {
+         $baseURL = "http://";
+      }
+      if (isset($_SERVER["HTTP_X_FORWARDED_HOST"])) {
+         $baseURL .= $_SERVER["HTTP_X_FORWARDED_HOST"];
+      } else if (isset($_SERVER["HTTP_X_FORWARDED_HOST"])) {
+         $baseURL .= $_SERVER["HTTP_X_FORWARDED_HOST"];
+      } else {
+         $baseURL .= $_SERVER["SERVER_NAME"];
+      }
+
+      $port = $_SERVER["SERVER_PORT"];
+      if (isset($_SERVER["HTTP_X_FORWARDED_PORT"])) {
+         $port = $_SERVER["HTTP_X_FORWARDED_PORT"];
+      }
 
-      if ($_SERVER["SERVER_PORT"] != "80" && $_SERVER["SERVER_PORT"] != "443") {
+      if ($port != "80" && $port != "443") {
          $baseURL .= ":" . $_SERVER["SERVER_PORT"];
       }
       return $baseURL;