stany.ferer před 1 rokem
rodič
revize
bdcbbb5f7d
1 změnil soubory, kde provedl 22 přidání a 19 odebrání
  1. 22 19
      access.inc.php

+ 22 - 19
access.inc.php

@@ -21,27 +21,30 @@
 
     // Filtre les IP authorisés à accéder au site
 
-    if(!is_null(WHITE_IP)){
-
-        function getUserIP() {
-            // Vérifie si l'adresse IP est disponible dans les en-têtes HTTP
-            if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
-                // Vérifie si l'IP est passée par un proxy
-                $ip = $_SERVER['HTTP_CLIENT_IP'];
-            } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
-                // Vérifie si l'IP est passée par un autre proxy
-                $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
-            } else {
-                // Sinon, utilise l'adresse IP directement
-                $ip = $_SERVER['REMOTE_ADDR'];
-            }
-        
-            return $ip;
+    function getUserIP() {
+        $ip = 'Inconnu';
+    
+        if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
+            // IP partagée par un proxy
+            $ip = $_SERVER['HTTP_CLIENT_IP'];
+        } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
+            // IP du client derrière un proxy
+            $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
+        } else {
+            // IP du client directement connectée au serveur
+            $ip = $_SERVER['REMOTE_ADDR'];
         }
+    
+        // Nettoyage des IPs multiples dans le cas de 'HTTP_X_FORWARDED_FOR'
+        if (strpos($ip, ',') !== false) {
+            $ip = explode(',', $ip)[0];
+        }
+    
+        return $ip;
+    }
 
-        echo "Votre adresse IP est : " . $userIP;
-
-        if(!in_array(getUserIP(), WHITE_IP)){
+    if(!is_null(WHITE_IP)){
+        if(!in_array(htmlspecialchars(getUserIP()), WHITE_IP)){
             header('HTTP/1.0 401 Unauthorized');
             header('Content-Type: text/html; charset=utf-8');
             echo '  <!DOCTYPE html>