Ver código fonte

HTTP Auth disallow multiple headers (#7528)

When using HTTP Auth methods (including OpenID Connect), exactly 1 HTTP header should be received, not more.
Alexandre Alapetite 11 meses atrás
pai
commit
6bb8680ae0
1 arquivos alterados com 6 adições e 0 exclusões
  1. 6 0
      lib/lib_rss.php

+ 6 - 0
lib/lib_rss.php

@@ -813,6 +813,12 @@ function checkTrustedIP(): bool {
 }
 }
 
 
 function httpAuthUser(bool $onlyTrusted = true): string {
 function httpAuthUser(bool $onlyTrusted = true): string {
+	$auths = array_intersect_key($_SERVER, ['REMOTE_USER' => '', 'REDIRECT_REMOTE_USER' => '', 'HTTP_REMOTE_USER' => '', 'HTTP_X_WEBAUTH_USER' => '']);
+	if (count($auths) > 1) {
+		Minz_Log::warning('Multiple HTTP authentication headers!');
+		return '';
+	}
+
 	if (!empty($_SERVER['REMOTE_USER']) && is_string($_SERVER['REMOTE_USER'])) {
 	if (!empty($_SERVER['REMOTE_USER']) && is_string($_SERVER['REMOTE_USER'])) {
 		return $_SERVER['REMOTE_USER'];
 		return $_SERVER['REMOTE_USER'];
 	}
 	}