- Модуль: security
- Путь к файлу: ~/bitrix/modules/security/classes/general/tests/environment.php
- Класс: CSecurityEnvironmentTest
- Вызов: CSecurityEnvironmentTest::checkCollectivePhpSession
protected function checkCollectivePhpSession()
{
if(self::isRunOnWin())
return self::STATUS_PASSED;
if($this->getSessionGeneralHandlerType() !== SessionConfigurationResolver::TYPE_FILE)
return self::STATUS_PASSED;
if(ini_get("session.save_handler") != "files")
return self::STATUS_PASSED;
$tmpDir = self::getTmpDir("session.save_path");
if(!$tmpDir)
return self::STATUS_PASSED;
$additionalInfo = "";
$isFailed = false;
$currentUID = self::getCurrentUID();
$sessionSign = self::getSessionUniqID();
foreach (glob($tmpDir."/sess_*", GLOB_NOSORT) as $fileName)
{
if($currentUID !== null)
{
$fileOwner = fileowner($fileName);
if($currentUID != $fileOwner)
{
$additionalInfo = getMessage("SECURITY_SITE_CHECKER_COLLECTIVE_SESSION_ADDITIONAL_OWNER", array(
"#FILE#" => $fileName,
"#FILE_ONWER#" => $fileOwner,
"#CURRENT_OWNER#" => $currentUID,
));
$isFailed = true;
break;
}
}
if(is_readable($fileName))
{
$fileContent = file_get_contents($fileName);
if (mb_strpos($fileContent, $sessionSign) === false)
{
$additionalInfo = getMessage("SECURITY_SITE_CHECKER_COLLECTIVE_SESSION_ADDITIONAL_SIGN", array(
"#FILE#" => $fileName,
"#FILE_CONTENT#" => htmlspecialcharsbx(mb_substr($fileContent, 0, 1024)),
"#SIGN#" => $sessionSign
));
$isFailed = true;
break;
}
}
}
if($isFailed)
{
$this->addUnformattedDetailError(
"SECURITY_SITE_CHECKER_COLLECTIVE_SESSION",
CSecurityCriticalLevel::HIGHT,
$additionalInfo
);
return self::STATUS_FAILED;
}
return self::STATUS_PASSED;
}