mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-09-12 16:14:27 +08:00
Drop in_iframe and X-Frame-Options due to CSP, found while investigating #537
This commit is contained in:
parent
54107ca937
commit
97cae30a51
6 changed files with 5 additions and 12 deletions
|
@ -1,7 +1,5 @@
|
||||||
import ko from 'ko';
|
import ko from 'ko';
|
||||||
|
|
||||||
import { Settings } from 'Common/Globals';
|
|
||||||
|
|
||||||
import { logoutLink } from 'Common/Links';
|
import { logoutLink } from 'Common/Links';
|
||||||
import { i18nToNodes, initOnStartOrLangChange } from 'Common/Translator';
|
import { i18nToNodes, initOnStartOrLangChange } from 'Common/Translator';
|
||||||
|
|
||||||
|
@ -23,7 +21,7 @@ export class AbstractApp {
|
||||||
const url = logoutLink();
|
const url = logoutLink();
|
||||||
|
|
||||||
if (location.href !== url) {
|
if (location.href !== url) {
|
||||||
setTimeout(() => (Settings.app('inIframe') ? parent : window).location.href = url, 100);
|
setTimeout(() => location.href = url, 100);
|
||||||
} else {
|
} else {
|
||||||
rl.route.reload();
|
rl.route.reload();
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,7 +79,7 @@ export class AppUser extends AbstractApp {
|
||||||
const currentTime = Date.now();
|
const currentTime = Date.now();
|
||||||
if (currentTime > (lastTime + interval + 1000)) {
|
if (currentTime > (lastTime + interval + 1000)) {
|
||||||
Remote.request('Version',
|
Remote.request('Version',
|
||||||
iError => (100 < iError) && (Settings.app('inIframe') ? parent : window).location.reload(),
|
iError => (100 < iError) && location.reload(),
|
||||||
{ Version: Settings.app('version') }
|
{ Version: Settings.app('version') }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -211,7 +211,7 @@ export class AppUser extends AbstractApp {
|
||||||
Remote.request('Logout', () => {
|
Remote.request('Logout', () => {
|
||||||
const customLogoutLink = Settings.app('customLogoutLink');
|
const customLogoutLink = Settings.app('customLogoutLink');
|
||||||
if (customLogoutLink) {
|
if (customLogoutLink) {
|
||||||
((window.parent && Settings.app('inIframe')) ? window.parent : window).location.href = customLogoutLink;
|
location.href = customLogoutLink;
|
||||||
} else {
|
} else {
|
||||||
rl.logoutReload()
|
rl.logoutReload()
|
||||||
}
|
}
|
||||||
|
|
2
dev/bootstrap.js
vendored
2
dev/bootstrap.js
vendored
|
@ -39,7 +39,7 @@ export default App => {
|
||||||
},
|
},
|
||||||
reload: () => {
|
reload: () => {
|
||||||
rl.route.root();
|
rl.route.root();
|
||||||
setTimeout(() => (Settings.app('inIframe') ? parent : window).location.reload(), 100);
|
setTimeout(() => location.reload(), 100);
|
||||||
},
|
},
|
||||||
off: () => hasher.active = false,
|
off: () => hasher.active = false,
|
||||||
on: () => hasher.active = true
|
on: () => hasher.active = true
|
||||||
|
|
|
@ -652,7 +652,6 @@ class Actions
|
||||||
'version' => APP_VERSION,
|
'version' => APP_VERSION,
|
||||||
'admin' => $bAdmin,
|
'admin' => $bAdmin,
|
||||||
'token' => $oConfig->Get('security', 'csrf_protection', false) ? Utils::GetCsrfToken() : '',
|
'token' => $oConfig->Get('security', 'csrf_protection', false) ? Utils::GetCsrfToken() : '',
|
||||||
'inIframe' => (bool)$oConfig->Get('labs', 'in_iframe', false),
|
|
||||||
'allowHtmlEditorBitiButtons' => (bool)$oConfig->Get('labs', 'allow_html_editor_biti_buttons', false),
|
'allowHtmlEditorBitiButtons' => (bool)$oConfig->Get('labs', 'allow_html_editor_biti_buttons', false),
|
||||||
'allowCtrlEnterOnCompose' => (bool)$oConfig->Get('labs', 'allow_ctrl_enter_on_compose', false),
|
'allowCtrlEnterOnCompose' => (bool)$oConfig->Get('labs', 'allow_ctrl_enter_on_compose', false),
|
||||||
'useImapThread' => (bool)$oConfig->Get('labs', 'use_imap_thread', false),
|
'useImapThread' => (bool)$oConfig->Get('labs', 'use_imap_thread', false),
|
||||||
|
|
|
@ -168,7 +168,6 @@ class Application extends \RainLoop\Config\AbstractConfig
|
||||||
'Enable CSRF protection (http://en.wikipedia.org/wiki/Cross-site_request_forgery)'),
|
'Enable CSRF protection (http://en.wikipedia.org/wiki/Cross-site_request_forgery)'),
|
||||||
|
|
||||||
'custom_server_signature' => array('SnappyMail'),
|
'custom_server_signature' => array('SnappyMail'),
|
||||||
'x_frame_options_header' => array('DENY'),
|
|
||||||
'x_xss_protection_header' => array('1; mode=block'),
|
'x_xss_protection_header' => array('1; mode=block'),
|
||||||
|
|
||||||
'openpgp' => array(false),
|
'openpgp' => array(false),
|
||||||
|
@ -375,7 +374,6 @@ Enables caching in the system'),
|
||||||
'folders_spec_limit' => array(50),
|
'folders_spec_limit' => array(50),
|
||||||
'curl_proxy' => array(''),
|
'curl_proxy' => array(''),
|
||||||
'curl_proxy_auth' => array(''),
|
'curl_proxy_auth' => array(''),
|
||||||
'in_iframe' => array(false),
|
|
||||||
'force_https' => array(false),
|
'force_https' => array(false),
|
||||||
'custom_login_link' => array(''),
|
'custom_login_link' => array(''),
|
||||||
'custom_logout_link' => array(''),
|
'custom_logout_link' => array(''),
|
||||||
|
|
|
@ -43,9 +43,6 @@ abstract class Service
|
||||||
|
|
||||||
static::setCSP();
|
static::setCSP();
|
||||||
|
|
||||||
$sXFrameOptionsHeader = \trim($oConfig->Get('security', 'x_frame_options_header', '')) ?: 'DENY';
|
|
||||||
\header('X-Frame-Options: '.$sXFrameOptionsHeader);
|
|
||||||
|
|
||||||
$sXssProtectionOptionsHeader = \trim($oConfig->Get('security', 'x_xss_protection_header', '')) ?: '1; mode=block';
|
$sXssProtectionOptionsHeader = \trim($oConfig->Get('security', 'x_xss_protection_header', '')) ?: '1; mode=block';
|
||||||
\header('X-XSS-Protection: '.$sXssProtectionOptionsHeader);
|
\header('X-XSS-Protection: '.$sXssProtectionOptionsHeader);
|
||||||
|
|
||||||
|
@ -250,6 +247,7 @@ abstract class Service
|
||||||
$CSP = new \SnappyMail\HTTP\CSP(\trim(Api::Config()->Get('security', 'content_security_policy', '')));
|
$CSP = new \SnappyMail\HTTP\CSP(\trim(Api::Config()->Get('security', 'content_security_policy', '')));
|
||||||
$CSP->report = Api::Config()->Get('security', 'csp_report', false);
|
$CSP->report = Api::Config()->Get('security', 'csp_report', false);
|
||||||
$CSP->report_only = Api::Config()->Get('debug', 'enable', false); // '0.0.0' === APP_VERSION
|
$CSP->report_only = Api::Config()->Get('debug', 'enable', false); // '0.0.0' === APP_VERSION
|
||||||
|
// $CSP->frame = \explode(' ', Api::Config()->Get('security', 'csp_iframe', ''));
|
||||||
|
|
||||||
// Allow https: due to remote images in e-mails or use proxy
|
// Allow https: due to remote images in e-mails or use proxy
|
||||||
if (!Api::Config()->Get('security', 'use_local_proxy_for_external_images', '')) {
|
if (!Api::Config()->Get('security', 'use_local_proxy_for_external_images', '')) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue