1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-07-24 10:31:57 +02:00

[ticket/13531] Explicitly disallow trailing paths (e.g. PATH_INFO).

PHPBB3-13531
This commit is contained in:
Marc Alexander
2015-01-21 00:16:42 +01:00
committed by Andreas Fischer
parent d17904884e
commit 4b9434bf1b
2 changed files with 89 additions and 0 deletions

View File

@@ -95,6 +95,40 @@ function deregister_globals()
unset($input);
}
/**
* Check if requested page uses a trailing path
*
* @param string $phpEx PHP extension
*
* @return bool True if trailing path is used, false if not
*/
function phpbb_has_trailing_path($phpEx)
{
// Check if path_info is being used
if (!empty($_SERVER['PATH_INFO']) || !empty($_SERVER['ORIG_PATH_INFO']))
{
return true;
}
// Match any trailing path appended to a php script in the REQUEST_URI.
// It is assumed that only actual PHP scripts use names like foo.php. Due
// to this, any phpBB board inside a directory that has the php extension
// appended to its name will stop working, i.e. if the board is at
// example.com/phpBB/test.php/ or example.com/test.php/
if (preg_match('#^[^?]+\.' . preg_quote($phpEx, '#') . '/#', $_SERVER['REQUEST_URI']))
{
return true;
}
return false;
}
// Check if trailing path is used
if (phpbb_has_trailing_path($phpEx))
{
exit('Trailing paths and path_info is not supported by phpBB 3.0');
}
// Register globals and magic quotes have been dropped in PHP 5.4
if (version_compare(PHP_VERSION, '5.4.0-dev', '>='))
{