Add form-action CSP element
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
This commit is contained in:
parent
f1066fd769
commit
f94ee72507
|
@ -225,6 +225,15 @@ class ContentSecurityPolicy extends \OCP\AppFramework\Http\ContentSecurityPolicy
|
||||||
$this->allowedWorkerSrcDomains = $allowedWorkerSrcDomains;
|
$this->allowedWorkerSrcDomains = $allowedWorkerSrcDomains;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getAllowedFormActionDomains(): array {
|
||||||
|
return $this->allowedFormActionDomains;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setAllowedFormActionDomains(array $allowedFormActionDomains): void {
|
||||||
|
$this->allowedFormActionDomains = $allowedFormActionDomains;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public function getReportTo(): array {
|
public function getReportTo(): array {
|
||||||
return $this->reportTo;
|
return $this->reportTo;
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,6 +93,11 @@ class ContentSecurityPolicy extends EmptyContentSecurityPolicy {
|
||||||
/** @var array Domains from which web-workers can be loaded */
|
/** @var array Domains from which web-workers can be loaded */
|
||||||
protected $allowedWorkerSrcDomains = [];
|
protected $allowedWorkerSrcDomains = [];
|
||||||
|
|
||||||
|
/** @var array Domains which can be used as target for forms */
|
||||||
|
protected $allowedFormActionDomains = [
|
||||||
|
'\'self\'',
|
||||||
|
];
|
||||||
|
|
||||||
/** @var array Locations to report violations to */
|
/** @var array Locations to report violations to */
|
||||||
protected $reportTo = [];
|
protected $reportTo = [];
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,6 +75,8 @@ class EmptyContentSecurityPolicy {
|
||||||
protected $allowedFrameAncestors = null;
|
protected $allowedFrameAncestors = null;
|
||||||
/** @var array Domains from which web-workers can be loaded */
|
/** @var array Domains from which web-workers can be loaded */
|
||||||
protected $allowedWorkerSrcDomains = null;
|
protected $allowedWorkerSrcDomains = null;
|
||||||
|
/** @var array Domains which can be used as target for forms */
|
||||||
|
protected $allowedFormActionDomains = null;
|
||||||
|
|
||||||
/** @var array Locations to report violations to */
|
/** @var array Locations to report violations to */
|
||||||
protected $reportTo = null;
|
protected $reportTo = null;
|
||||||
|
@ -386,6 +388,29 @@ class EmptyContentSecurityPolicy {
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Domain to where forms can submit
|
||||||
|
*
|
||||||
|
* @since 17.0.0
|
||||||
|
*
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function addAllowedFormActionDomain(string $domain) {
|
||||||
|
$this->allowedFormActionDomains[] = $domain;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove domain to where forms can submit
|
||||||
|
*
|
||||||
|
* @return $this
|
||||||
|
* @since 17.0.0
|
||||||
|
*/
|
||||||
|
public function disallowFormActionDomain(string $domain) {
|
||||||
|
$this->allowedFormActionDomains = array_diff($this->allowedFormActionDomains, [$domain]);
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add location to report CSP violations to
|
* Add location to report CSP violations to
|
||||||
*
|
*
|
||||||
|
@ -491,6 +516,11 @@ class EmptyContentSecurityPolicy {
|
||||||
$policy .= ';';
|
$policy .= ';';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($this->allowedFormActionDomains)) {
|
||||||
|
$policy .= 'form-action ' . implode(' ', $this->allowedFormActionDomains);
|
||||||
|
$policy .= ';';
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($this->reportTo)) {
|
if (!empty($this->reportTo)) {
|
||||||
$policy .= 'report-uri ' . implode(' ', $this->reportTo);
|
$policy .= 'report-uri ' . implode(' ', $this->reportTo);
|
||||||
$policy .= ';';
|
$policy .= ';';
|
||||||
|
|
Loading…
Reference in New Issue