security audit fixes: task ID 12, 14, 15: remote X-Forwarded-For headers key lookup, move IP lookup / auth key lookup to web-server generated keys

This commit is contained in:
merelendor 2024-11-30 07:57:37 +00:00
parent 84296ecb3f
commit 272c8f9ceb
2 changed files with 10 additions and 4 deletions

View File

@ -89,7 +89,7 @@ function checkRequestIsLocal()
return true;
}
if(strpos($_SERVER['HTTP_X_FORWARDED_FOR'], SELF_IP) > -1)
if($_SERVER[API_SELF_IP_LOOKUP_KEY] === SELF_IP)
{
return true;
}
@ -342,9 +342,9 @@ function setCompanyForUser($ID, $REQ, $replace = false)
}
}
if($_SERVER['REMOTE_USER'] && strpos($_SERVER['REMOTE_USER'], "Bearer") > -1)
if($_SERVER[API_AUTH_LOOKUP_KEY] && strpos($_SERVER[API_AUTH_LOOKUP_KEY], "Bearer") > -1)
{
$token = str_replace("Bearer ", "", $_SERVER['REMOTE_USER']);
$token = str_replace("Bearer ", "", $_SERVER[API_AUTH_LOOKUP_KEY]);
try
{
@ -2764,7 +2764,7 @@ switch($PARAM_1)
{
if(checkRequestIsLocal())
{
$token = str_replace("Bearer ", "", $_SERVER['REMOTE_USER']);
$token = str_replace("Bearer ", "", $_SERVER[API_AUTH_LOOKUP_KEY]);
$auth = (array) \Bitrix\Main\Web\JWT::decode($token, $secret, ["HS256"]);
$user = new \CUser;

View File

@ -7,3 +7,9 @@ MODE_PRODUCTION - включен ли production режим
DEBUG_IBLOCK_CYCLE - позволять ли сохранять дамп структуры элемента инфоблока при Add/Update операциях на подверженных рекламе инфоблоках
ADVERTISING_IBLOCK_ARRAY - Массив идентификаторов инфоблоков, формата КОНСТАНТА => строковое значение из проекта evolution-advertiser
```
## Константы, зависящие от метода размещения - за CDN/без, используется ли контейнеризация
### авторизация в методах API осуществляется посредством передачи JWT токена
```
API_SELF_IP_LOOKUP_KEY - ключ в заголовках http запроса/передаваемых параметрах веб-сервера, валидные значения: REMOTE_ADDR; при использовании CDN: HTTP_CF_CONNECTING_IP или иной ключ, не подверженный подмене первичным отправителем запроса
API_AUTH_LOOKUP_KEY - ключ в заголовках http запроса/передаваемых параметрах веб-сервера, валидные значения: HTTP_AUTHORIZATION, REMOTE_USER
```