• Модуль: security
  • Путь к файлу: ~/bitrix/modules/security/classes/general/tests/file_permissions.php
  • Класс: CSecurityFilePermissionsTest
  • Вызов: CSecurityFilePermissionsTest::checkWorldWritableDirRecursive
protected function checkWorldWritableDirRecursive($pDir)
{
	$result = false;
	if ($handle = opendir($pDir))
	{
		while (false !== ($item = readdir($handle)))
		{
			if($item == "." || $item == ".." || in_array($item, self::$skipDirs))
				continue;

			if($this->filesCount > self::MAX_OUTPUT_FILES)
				return $result;

			if(time() >= $this->maximumExecutionTime)
				throw new Exception('SECURITY_SITE_CHECKER_FILE_PERM_TIMEOUT');

			$curFile = $pDir."/".$item;
			$isInteresting = self::isInterestingFile($curFile) || self::isInterestingDir($curFile);
			if ($isInteresting && self::isWorldWritable($curFile))
			{
				$result = true;
				$this->filesCount++;
				$this->addFilePath($curFile);

			}
			if (is_dir($curFile))
			{
				if($this->checkWorldWritableDirRecursive($curFile))
				{
					$result = true;
				}
			}
		}
		closedir($handle);
	}
	return $result;
}