Reorg: Move CSP class to Request/

Bug: T321882
Change-Id: Ic809656a31e08626d0e5a1172da02b2397096e14
This commit is contained in:
Amir Sarabadani 2023-02-16 13:36:41 +01:00
parent ca5d953895
commit bfedab2eb8
8 changed files with 31 additions and 7 deletions

View file

@ -293,7 +293,7 @@ $wgAutoloadLocalClasses = [
'ContentHandler' => __DIR__ . '/includes/content/ContentHandler.php',
'ContentModelChange' => __DIR__ . '/includes/content/ContentModelChange.php',
'ContentModelLogFormatter' => __DIR__ . '/includes/logging/ContentModelLogFormatter.php',
'ContentSecurityPolicy' => __DIR__ . '/includes/ContentSecurityPolicy.php',
'ContentSecurityPolicy' => __DIR__ . '/includes/Request/ContentSecurityPolicy.php',
'ContextSource' => __DIR__ . '/includes/context/ContextSource.php',
'ContribsPager' => __DIR__ . '/includes/specials/pagers/ContribsPager.php',
'ConvertExtensionToRegistration' => __DIR__ . '/maintenance/convertExtensionToRegistration.php',
@ -1637,6 +1637,7 @@ $wgAutoloadLocalClasses = [
'MediaWiki\\Preferences\\SignatureValidatorFactory' => __DIR__ . '/includes/preferences/SignatureValidatorFactory.php',
'MediaWiki\\Preferences\\TimezoneFilter' => __DIR__ . '/includes/preferences/TimezoneFilter.php',
'MediaWiki\\ProcOpenError' => __DIR__ . '/includes/exception/ProcOpenError.php',
'MediaWiki\\Request\\ContentSecurityPolicy' => __DIR__ . '/includes/Request/ContentSecurityPolicy.php',
'MediaWiki\\Request\\DerivativeRequest' => __DIR__ . '/includes/Request/DerivativeRequest.php',
'MediaWiki\\Request\\FauxRequest' => __DIR__ . '/includes/Request/FauxRequest.php',
'MediaWiki\\Request\\FauxRequestUpload' => __DIR__ . '/includes/Request/FauxRequestUpload.php',

View file

@ -25,6 +25,7 @@
use MediaWiki\MainConfigNames;
use MediaWiki\MediaWikiServices;
use MediaWiki\Request\ContentSecurityPolicy;
/**
* This class is a collection of static functions that serve two purposes:

View file

@ -28,6 +28,7 @@ use MediaWiki\Page\PageRecord;
use MediaWiki\Page\PageReference;
use MediaWiki\Parser\ParserOutputFlags;
use MediaWiki\Permissions\PermissionStatus;
use MediaWiki\Request\ContentSecurityPolicy;
use MediaWiki\Request\FauxRequest;
use MediaWiki\ResourceLoader as RL;
use MediaWiki\ResourceLoader\ResourceLoader;

View file

@ -25,10 +25,16 @@
* @file
*/
namespace MediaWiki\Request;
use Config;
use LogicException;
use MediaWiki\HookContainer\HookContainer;
use MediaWiki\HookContainer\HookRunner;
use MediaWiki\MainConfigNames;
use MediaWiki\MediaWikiServices;
use UnexpectedValueException;
use WebResponse;
class ContentSecurityPolicy {
public const REPORT_ONLY_MODE = 1;
@ -60,7 +66,9 @@ class ContentSecurityPolicy {
* @param HookContainer $hookContainer
* @since 1.35 Method signature changed
*/
public function __construct( WebResponse $response, Config $mwConfig,
public function __construct(
WebResponse $response,
Config $mwConfig,
HookContainer $hookContainer
) {
$this->response = $response;
@ -366,8 +374,11 @@ class ContentSecurityPolicy {
private function getAdditionalSelfUrlsScript() {
$additionalUrls = [];
// wgExtensionAssetsPath for ?debug=true mode
$pathVars = [ MainConfigNames::LoadScript, MainConfigNames::ExtensionAssetsPath,
MainConfigNames::ResourceBasePath ];
$pathVars = [
MainConfigNames::LoadScript,
MainConfigNames::ExtensionAssetsPath,
MainConfigNames::ResourceBasePath,
];
foreach ( $pathVars as $path ) {
$url = $this->mwConfig->get( $path );
@ -420,8 +431,12 @@ class ContentSecurityPolicy {
$repoGroup->forEachForeignRepo( $callback, [ &$pathUrls ] );
// Globals that might point to a different domain
$pathGlobals = [ MainConfigNames::LoadScript, MainConfigNames::ExtensionAssetsPath,
MainConfigNames::StylePath, MainConfigNames::ResourceBasePath ];
$pathGlobals = [
MainConfigNames::LoadScript,
MainConfigNames::ExtensionAssetsPath,
MainConfigNames::StylePath,
MainConfigNames::ResourceBasePath,
];
foreach ( $pathGlobals as $path ) {
$pathUrls[] = $this->mwConfig->get( $path );
}
@ -511,7 +526,7 @@ class ContentSecurityPolicy {
public static function isNonceRequired( Config $config ) {
$configs = [
$config->get( MainConfigNames::CSPHeader ),
$config->get( MainConfigNames::CSPReportOnlyHeader )
$config->get( MainConfigNames::CSPReportOnlyHeader ),
];
return self::isNonceRequiredArray( $configs );
}
@ -592,3 +607,5 @@ class ContentSecurityPolicy {
$this->extraScriptSrc[] = $this->prepareUrlForCSP( $source );
}
}
class_alias( ContentSecurityPolicy::class, 'ContentSecurityPolicy' );

View file

@ -22,6 +22,7 @@
use MediaWiki\Logger\LoggerFactory;
use MediaWiki\MainConfigNames;
use MediaWiki\Request\ContentSecurityPolicy;
use Psr\Log\LoggerInterface;
use Wikimedia\ParamValidator\ParamValidator;

View file

@ -1,6 +1,7 @@
<?php
use MediaWiki\MainConfigNames;
use MediaWiki\Request\ContentSecurityPolicy;
use Wikimedia\TestingAccessWrapper;
class ContentSecurityPolicyTest extends MediaWikiIntegrationTestCase {

View file

@ -8,6 +8,7 @@ use MediaWiki\Page\PageReferenceValue;
use MediaWiki\Page\PageStoreRecord;
use MediaWiki\Parser\ParserOutputFlags;
use MediaWiki\Permissions\Authority;
use MediaWiki\Request\ContentSecurityPolicy;
use MediaWiki\Request\FauxRequest;
use MediaWiki\ResourceLoader as RL;
use MediaWiki\ResourceLoader\ResourceLoader;

View file

@ -1,6 +1,7 @@
<?php
use MediaWiki\MainConfigNames;
use MediaWiki\Request\ContentSecurityPolicy;
use PHPUnit\Framework\MockObject\MockObject;
/**