mirror of
https://github.com/phpbb/phpbb.git
synced 2025-08-18 14:31:19 +02:00
[feature/request-class] Add server(), header() and is_ajax() to request
Extend the request class with helpers for reading server vars (server()) and HTTP request headers (header()). Refactor the existing code base to make use of these helpers, make $_SERVER a deactivated super global. Also introduce an is_ajax() method, which checks the X-Requested-With header for the value 'XMLHttpRequest', which is sent by JavaScript libraries, such as jQuery. PHPBB3-9716
This commit is contained in:
@@ -7,6 +7,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/../mock/request.php';
|
||||
|
||||
abstract class phpbb_security_test_base extends phpbb_test_case
|
||||
{
|
||||
/**
|
||||
@@ -14,20 +16,20 @@ abstract class phpbb_security_test_base extends phpbb_test_case
|
||||
*/
|
||||
protected function setUp()
|
||||
{
|
||||
global $user, $phpbb_root_path;
|
||||
global $user, $phpbb_root_path, $request;
|
||||
|
||||
// Put this into a global function being run by every test to init a proper user session
|
||||
$_SERVER['HTTP_HOST'] = 'localhost';
|
||||
$_SERVER['SERVER_NAME'] = 'localhost';
|
||||
$_SERVER['SERVER_ADDR'] = '127.0.0.1';
|
||||
$_SERVER['SERVER_PORT'] = 80;
|
||||
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
||||
$_SERVER['QUERY_STRING'] = '';
|
||||
$_SERVER['REQUEST_URI'] = '/tests/';
|
||||
$_SERVER['SCRIPT_NAME'] = '/tests/index.php';
|
||||
$_SERVER['PHP_SELF'] = '/tests/index.php';
|
||||
$_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14';
|
||||
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'de-de,de;q=0.8,en-us;q=0.5,en;q=0.3';
|
||||
$server['HTTP_HOST'] = 'localhost';
|
||||
$server['SERVER_NAME'] = 'localhost';
|
||||
$server['SERVER_ADDR'] = '127.0.0.1';
|
||||
$server['SERVER_PORT'] = 80;
|
||||
$server['REMOTE_ADDR'] = '127.0.0.1';
|
||||
$server['QUERY_STRING'] = '';
|
||||
$server['REQUEST_URI'] = '/tests/';
|
||||
$server['SCRIPT_NAME'] = '/tests/index.php';
|
||||
$server['PHP_SELF'] = '/tests/index.php';
|
||||
$server['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14';
|
||||
$server['HTTP_ACCEPT_LANGUAGE'] = 'de-de,de;q=0.8,en-us;q=0.5,en;q=0.3';
|
||||
|
||||
/*
|
||||
[HTTP_ACCEPT_ENCODING] => gzip,deflate
|
||||
@@ -36,13 +38,15 @@ abstract class phpbb_security_test_base extends phpbb_test_case
|
||||
[SCRIPT_FILENAME] => /var/www/tests/index.php
|
||||
*/
|
||||
|
||||
$request = new phpbb_mock_request(array(), array(), array(), $server);
|
||||
|
||||
// Set no user and trick a bit to circumvent errors
|
||||
$user = new user();
|
||||
$user->lang = true;
|
||||
$user->browser = (!empty($_SERVER['HTTP_USER_AGENT'])) ? htmlspecialchars((string) $_SERVER['HTTP_USER_AGENT']) : '';
|
||||
$user->referer = (!empty($_SERVER['HTTP_REFERER'])) ? htmlspecialchars((string) $_SERVER['HTTP_REFERER']) : '';
|
||||
$user->forwarded_for = (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) ? (string) $_SERVER['HTTP_X_FORWARDED_FOR'] : '';
|
||||
$user->host = (!empty($_SERVER['HTTP_HOST'])) ? (string) strtolower($_SERVER['HTTP_HOST']) : ((!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : getenv('SERVER_NAME'));
|
||||
$user->browser = $server['HTTP_USER_AGENT'];
|
||||
$user->referer = '';
|
||||
$user->forwarded_for = '';
|
||||
$user->host = $server['HTTP_HOST'];
|
||||
$user->page = session::extract_current_page($phpbb_root_path);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user