- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/composite/responder.php
- Класс: BitrixMainCompositeResponder
- Вызов: Responder::isValidRequest
static function isValidRequest()
{
if (
isset($_SERVER["HTTP_BX_AJAX"]) ||
isset($_GET["bxajaxid"]) ||
(isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && $_SERVER["HTTP_X_REQUESTED_WITH"] === "XMLHttpRequest")
)
{
self::$error = Logger::TYPE_AJAX_REQUEST;
return false;
}
if (isset($_GET["ncc"]))
{
self::$error = Logger::TYPE_NCC_PARAMETER;
return false;
}
if (Helper::isBitrixFolder())
{
self::$error = Logger::TYPE_BITRIX_FOLDER;
return false;
}
if (preg_match("#^/index_controller\.php#", $_SERVER["REQUEST_URI"]) > 0)
{
self::$error = Logger::TYPE_CONTROLLER_FILE;
return false;
}
//to warm up localStorage
define("ENABLE_HTML_STATIC_CACHE_JS", true);
if ($_SERVER["REQUEST_METHOD"] !== "GET")
{
self::$error = Logger::TYPE_GET_METHOD_ONLY;
self::$errorMessage = "Request Method: ".$_SERVER["REQUEST_METHOD"];
return false;
}
if (isset($_GET["sessid"]))
{
self::$error = Logger::TYPE_SESSID_PARAMETER;
return false;
}
$compositeOptions = Helper::getOptions();
//NCC cookie exists
if (isset($compositeOptions["COOKIE_NCC"]) &&
array_key_exists($compositeOptions["COOKIE_NCC"], $_COOKIE) &&
$_COOKIE[$compositeOptions["COOKIE_NCC"]] === "Y"
)
{
self::$error = Logger::TYPE_NCC_COOKIE;
return false;
}
//A stored authorization exists, but CC cookie doesn't exist
if (
isset($compositeOptions["STORE_PASSWORD"]) &&
$compositeOptions["STORE_PASSWORD"] == "Y" &&
isset($_COOKIE[$compositeOptions["COOKIE_LOGIN"]]) &&
$_COOKIE[$compositeOptions["COOKIE_LOGIN"]] !== "" &&
isset($_COOKIE[$compositeOptions["COOKIE_PASS"]]) &&
$_COOKIE[$compositeOptions["COOKIE_PASS"]] !== ""
)
{
if (
!isset($compositeOptions["COOKIE_CC"]) ||
!array_key_exists($compositeOptions["COOKIE_CC"], $_COOKIE) ||
$_COOKIE[$compositeOptions["COOKIE_CC"]] !== "Y"
)
{
self::$error = Logger::TYPE_CC_COOKIE_NOT_FOUND;
return false;
}
}
$queryPos = mb_strpos($_SERVER["REQUEST_URI"], "?");
$requestUri = $queryPos === false? $_SERVER["REQUEST_URI"] : mb_substr($_SERVER["REQUEST_URI"], 0, $queryPos);
//Checks excluded masks
if (isset($compositeOptions["~EXCLUDE_MASK"]) && is_array($compositeOptions["~EXCLUDE_MASK"]))
{
foreach ($compositeOptions["~EXCLUDE_MASK"] as $mask)
{
if (preg_match($mask, $requestUri) > 0)
{
self::$error = Logger::TYPE_EXCLUDE_MASK;
self::$errorMessage = "Mask: ".$mask;
return false;
}
}
}
//Checks excluded GET params
if (isset($compositeOptions["~EXCLUDE_PARAMS"]) && is_array($compositeOptions["~EXCLUDE_PARAMS"]))
{
foreach ($compositeOptions["~EXCLUDE_PARAMS"] as $param)
{
if (array_key_exists($param, $_GET))
{
self::$error = Logger::TYPE_EXCLUDE_PARAMETER;
self::$errorMessage = "Parameter: ".$param;
return false;
}
}
}
//Checks included masks
$isRequestInMask = false;
if (isset($compositeOptions["~INCLUDE_MASK"]) && is_array($compositeOptions["~INCLUDE_MASK"]))
{
foreach ($compositeOptions["~INCLUDE_MASK"] as $mask)
{
if (preg_match($mask, $requestUri) > 0)
{
$isRequestInMask = true;
break;
}
}
}
if (!$isRequestInMask)
{
self::$error = Logger::TYPE_INCLUDE_MASK;
return false;
}
//Checks hosts
$host = Helper::getHttpHost();
if (!in_array($host, Helper::getDomains()))
{
self::$error = Logger::TYPE_INVALID_HOST;
self::$errorMessage = "Host: ".$host;
return false;
}
if (!self::isValidQueryString($compositeOptions))
{
self::$error = Logger::TYPE_INVALID_QUERY_STRING;
return false;
}
return true;
}