mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-07 20:08:53 +00:00
[ticket/13280] Make the tests failing
PHPBB3-13280
This commit is contained in:
parent
6d533d2f86
commit
f142ed28e4
4 changed files with 78 additions and 100 deletions
|
@ -13,6 +13,8 @@
|
|||
|
||||
abstract class phpbb_security_test_base extends phpbb_test_case
|
||||
{
|
||||
protected $server = array();
|
||||
|
||||
/**
|
||||
* Set up the required user object and server variables for the suites
|
||||
*/
|
||||
|
@ -21,17 +23,18 @@ abstract class phpbb_security_test_base extends phpbb_test_case
|
|||
global $user, $phpbb_root_path, $phpEx, $request, $symfony_request, $phpbb_filesystem;
|
||||
|
||||
// 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';
|
||||
$this->server['HTTP_HOST'] = 'localhost';
|
||||
$this->server['SERVER_NAME'] = 'localhost';
|
||||
$this->server['SERVER_ADDR'] = '127.0.0.1';
|
||||
$this->server['SERVER_PORT'] = 80;
|
||||
$this->server['REMOTE_ADDR'] = '127.0.0.1';
|
||||
$this->server['QUERY_STRING'] = '';
|
||||
$this->server['REQUEST_URI'] = '/tests/';
|
||||
$this->server['SCRIPT_NAME'] = '/tests/index.php';
|
||||
$this->server['SCRIPT_FILENAME'] = '/var/www/tests/index.php';
|
||||
$this->server['PHP_SELF'] = '/tests/index.php';
|
||||
$this->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';
|
||||
$this->server['HTTP_ACCEPT_LANGUAGE'] = 'de-de,de;q=0.8,en-us;q=0.5,en;q=0.3';
|
||||
|
||||
/*
|
||||
[HTTP_ACCEPT_ENCODING] => gzip,deflate
|
||||
|
@ -40,31 +43,18 @@ 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);
|
||||
$symfony_request = $this->getMock("\phpbb\symfony_request", array(), array(
|
||||
$request,
|
||||
));
|
||||
$symfony_request->expects($this->any())
|
||||
->method('getScriptName')
|
||||
->will($this->returnValue($server['SCRIPT_NAME']));
|
||||
$symfony_request->expects($this->any())
|
||||
->method('getQueryString')
|
||||
->will($this->returnValue($server['QUERY_STRING']));
|
||||
$symfony_request->expects($this->any())
|
||||
->method('getBasePath')
|
||||
->will($this->returnValue($server['REQUEST_URI']));
|
||||
$symfony_request->expects($this->any())
|
||||
->method('getPathInfo')
|
||||
->will($this->returnValue('/'));
|
||||
$phpbb_filesystem = new \phpbb\filesystem($symfony_request, $phpbb_root_path, $phpEx);
|
||||
$request = new phpbb_mock_request(array(), array(), array(), $this->server);
|
||||
$symfony_request = new \phpbb\symfony_request($request);
|
||||
|
||||
$phpbb_filesystem = new \phpbb\filesystem();
|
||||
|
||||
// Set no user and trick a bit to circumvent errors
|
||||
$user = new \phpbb\user('\phpbb\datetime');
|
||||
$user->lang = true;
|
||||
$user->browser = $server['HTTP_USER_AGENT'];
|
||||
$user->browser = $this->server['HTTP_USER_AGENT'];
|
||||
$user->referer = '';
|
||||
$user->forwarded_for = '';
|
||||
$user->host = $server['HTTP_HOST'];
|
||||
$user->host = $this->server['HTTP_HOST'];
|
||||
$user->page = \phpbb\session::extract_current_page($phpbb_root_path);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/base.php';
|
||||
|
||||
|
@ -20,33 +20,25 @@ class phpbb_security_extract_current_page_test extends phpbb_security_test_base
|
|||
public function security_variables()
|
||||
{
|
||||
return array(
|
||||
array('http://localhost/phpBB/index.php', 'mark=forums&x="><script>alert(/XSS/);</script>', 'mark=forums&x=%22%3E%3Cscript%3Ealert(/XSS/);%3C/script%3E'),
|
||||
array('http://localhost/phpBB/index.php', 'mark=forums&x=%22%3E%3Cscript%3Ealert(/XSS/);%3C/script%3E', 'mark=forums&x=%22%3E%3Cscript%3Ealert(/XSS/);%3C/script%3E'),
|
||||
array('mark=forums&x="><script>alert(/XSS/);</script>', 'mark=forums&x=%22%3E%3Cscript%3Ealert%28%2FXSS%2F%29%3B%3C%2Fscript%3E'),
|
||||
array('mark=forums&x=%22%3E%3Cscript%3Ealert(/XSS/);%3C/script%3E', 'mark=forums&x=%22%3E%3Cscript%3Ealert%28%2FXSS%2F%29%3B%3C%2Fscript%3E'),
|
||||
array('mark=forums&x=%22%3E%3Cscript%3Ealert%28%2FXSS%2F%29%3B%3C%2Fscript%3E', 'mark=forums&x=%22%3E%3Cscript%3Ealert%28%2FXSS%2F%29%3B%3C%2Fscript%3E'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider security_variables
|
||||
*/
|
||||
public function test_query_string_php_self($url, $query_string, $expected)
|
||||
* @dataProvider security_variables
|
||||
*/
|
||||
public function test_query_string_php_self($query_string, $expected)
|
||||
{
|
||||
global $symfony_request, $request;
|
||||
|
||||
$symfony_request = $this->getMock("\phpbb\symfony_request", array(), array(
|
||||
$request,
|
||||
));
|
||||
$symfony_request->expects($this->any())
|
||||
->method('getScriptName')
|
||||
->will($this->returnValue($url));
|
||||
$symfony_request->expects($this->any())
|
||||
->method('getQueryString')
|
||||
->will($this->returnValue($query_string));
|
||||
$symfony_request->expects($this->any())
|
||||
->method('getBasePath')
|
||||
->will($this->returnValue($server['REQUEST_URI']));
|
||||
$symfony_request->expects($this->any())
|
||||
->method('getPathInfo')
|
||||
->will($this->returnValue('/'));
|
||||
$this->server['REQUEST_URI'] = '';
|
||||
$this->server['QUERY_STRING'] = $query_string;
|
||||
|
||||
$request = new phpbb_mock_request(array(), array(), array(), $this->server);
|
||||
$symfony_request = new \phpbb\symfony_request($request);
|
||||
|
||||
$result = \phpbb\session::extract_current_page('./');
|
||||
|
||||
$label = 'Running extract_current_page on ' . $query_string . ' with PHP_SELF filled.';
|
||||
|
@ -54,27 +46,16 @@ class phpbb_security_extract_current_page_test extends phpbb_security_test_base
|
|||
}
|
||||
|
||||
/**
|
||||
* @dataProvider security_variables
|
||||
*/
|
||||
public function test_query_string_request_uri($url, $query_string, $expected)
|
||||
* @dataProvider security_variables
|
||||
*/
|
||||
public function test_query_string_request_uri($query_string, $expected)
|
||||
{
|
||||
global $symfony_request, $request;
|
||||
|
||||
$symfony_request = $this->getMock("\phpbb\symfony_request", array(), array(
|
||||
$request,
|
||||
));
|
||||
$symfony_request->expects($this->any())
|
||||
->method('getScriptName')
|
||||
->will($this->returnValue($url));
|
||||
$symfony_request->expects($this->any())
|
||||
->method('getQueryString')
|
||||
->will($this->returnValue($query_string));
|
||||
$symfony_request->expects($this->any())
|
||||
->method('getBasePath')
|
||||
->will($this->returnValue($server['REQUEST_URI']));
|
||||
$symfony_request->expects($this->any())
|
||||
->method('getPathInfo')
|
||||
->will($this->returnValue('/'));
|
||||
$this->server['QUERY_STRING'] = $query_string;
|
||||
|
||||
$request = new phpbb_mock_request(array(), array(), array(), $this->server);
|
||||
$symfony_request = new \phpbb\symfony_request($request);
|
||||
|
||||
$result = \phpbb\session::extract_current_page('./');
|
||||
|
||||
|
|
|
@ -73,6 +73,8 @@ class phpbb_security_redirect_test extends phpbb_security_test_base
|
|||
|
||||
protected function setUp()
|
||||
{
|
||||
global $phpbb_dispatcher;
|
||||
|
||||
parent::setUp();
|
||||
|
||||
$GLOBALS['config'] = array(
|
||||
|
@ -80,6 +82,8 @@ class phpbb_security_redirect_test extends phpbb_security_test_base
|
|||
);
|
||||
|
||||
$this->path_helper = $this->get_path_helper();
|
||||
|
||||
$phpbb_dispatcher = new phpbb_mock_event_dispatcher();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/../test_framework/phpbb_session_test_case.php';
|
||||
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
|
||||
|
||||
class phpbb_session_extract_page_test extends phpbb_session_test_case
|
||||
{
|
||||
|
@ -99,7 +100,7 @@ class phpbb_session_extract_page_test extends phpbb_session_test_case
|
|||
// ^-- Ignored because .. returns different directory in live vs testing
|
||||
'query_string' => '',
|
||||
'script_path' => '/phpBB/adm/',
|
||||
//'root_script_path' => '/phpBB/',
|
||||
//'root_script_path' => '/phpBB/adm/',
|
||||
//'page' => 'adm/index.php',
|
||||
'forum' => 0,
|
||||
),
|
||||
|
@ -108,15 +109,15 @@ class phpbb_session_extract_page_test extends phpbb_session_test_case
|
|||
'./',
|
||||
'/phpBB/adm/app.php',
|
||||
'page=1&test=2',
|
||||
'/phpBB/',
|
||||
'/phpBB/adm/',
|
||||
'/foo/bar',
|
||||
array(
|
||||
'page_name' => 'app.php/foo/bar',
|
||||
'page_dir' => '',
|
||||
//'page_dir' => '',
|
||||
'query_string' => 'page=1&test=2',
|
||||
'script_path' => '/phpBB/',
|
||||
'root_script_path' => '/phpBB/',
|
||||
'page' => 'app.php/foo/bar?page=1&test=2',
|
||||
'script_path' => '/phpBB/adm/',
|
||||
//'root_script_path' => '/phpBB/adm/',
|
||||
//'page' => 'app.php/foo/bar?page=1&test=2',
|
||||
'forum' => 0,
|
||||
),
|
||||
),
|
||||
|
@ -142,23 +143,25 @@ class phpbb_session_extract_page_test extends phpbb_session_test_case
|
|||
/** @dataProvider extract_current_page_data */
|
||||
function test_extract_current_page($root_path, $getScriptName, $getQueryString, $getBasePath, $getPathInfo, $expected)
|
||||
{
|
||||
global $symfony_request;
|
||||
global $symfony_request, $request, $phpbb_filesystem;
|
||||
|
||||
$symfony_request = $this->getMock("\phpbb\symfony_request", array(), array(
|
||||
new phpbb_mock_request(),
|
||||
));
|
||||
$symfony_request->expects($this->any())
|
||||
->method('getScriptName')
|
||||
->will($this->returnValue($getScriptName));
|
||||
$symfony_request->expects($this->any())
|
||||
->method('getQueryString')
|
||||
->will($this->returnValue($getQueryString));
|
||||
$symfony_request->expects($this->any())
|
||||
->method('getBasePath')
|
||||
->will($this->returnValue($getBasePath));
|
||||
$symfony_request->expects($this->any())
|
||||
->method('getPathInfo')
|
||||
->will($this->returnValue($getPathInfo));
|
||||
$phpbb_filesystem = new \phpbb\filesystem();
|
||||
|
||||
$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'] = $getQueryString;
|
||||
$server['REQUEST_URI'] = $getScriptName . $getPathInfo . ($getQueryString === '' ? '' : '?' . $getQueryString);
|
||||
$server['SCRIPT_NAME'] = $getScriptName;
|
||||
$server['SCRIPT_FILENAME'] = '/var/www/' . $getScriptName;
|
||||
$server['PHP_SELF'] = $getScriptName;
|
||||
$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';
|
||||
|
||||
$request = new phpbb_mock_request(array(), array(), array(), $server);
|
||||
$symfony_request = new \phpbb\symfony_request($request);
|
||||
|
||||
$output = \phpbb\session::extract_current_page($root_path);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue