fix duo with csp and chrome/edge

Signed-off-by: si458 <simonsmith5521@gmail.com>

si458 committed Apr 16, 2025 at 15:06 UTC b75f96cb1c29163ff6b824766a49abf049041f1e
1 file changed +8 -1
webserver.js
+8 -1
@@ -6719,13 +6719,20 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
6719 extraFrameSrc = ' https://' + req.headers.host + ':' + parent.webrelayserver.port;
6720 if ((xforwardedhost != null) && (xforwardedhost != req.headers.host)) { extraFrameSrc += ' https://' + xforwardedhost + ':' + parent.webrelayserver.port; }
6721 }
6722 +
6723
6724 + // If using duo add apihostname to CSP
6725 + var duoSrc = '';
6726 + if ((typeof domain.duo2factor == 'object') && (typeof domain.duo2factor.apihostname == 'string')) {
6727 + duoSrc = domain.duo2factor.apihostname;
6728 + }
6729 +
6730 // Finish setup security headers
6731 const headers = {
6732 'Referrer-Policy': 'no-referrer',
6733 'X-XSS-Protection': '1; mode=block',
6734 'X-Content-Type-Options': 'nosniff',
6728 - 'Content-Security-Policy': "default-src 'none'; font-src 'self' fonts.gstatic.com data:; script-src 'self' 'unsafe-inline' " + extraScriptSrc + "; connect-src 'self'" + geourl + selfurl + "; img-src 'self' blob: data:" + geourl + " data:; style-src 'self' 'unsafe-inline' fonts.googleapis.com; frame-src 'self' blob: mcrouter:" + extraFrameSrc + "; media-src 'self'; form-action 'self'; manifest-src 'self'"
6735 + 'Content-Security-Policy': "default-src 'none'; font-src 'self' fonts.gstatic.com data:; script-src 'self' 'unsafe-inline' " + extraScriptSrc + "; connect-src 'self'" + geourl + selfurl + "; img-src 'self' blob: data:" + geourl + " data:; style-src 'self' 'unsafe-inline' fonts.googleapis.com; frame-src 'self' blob: mcrouter:" + extraFrameSrc + "; media-src 'self'; form-action 'self' " + duoSrc + "; manifest-src 'self'"
6736 };
6737 if (req.headers['user-agent'] && (req.headers['user-agent'].indexOf('Chrome') >= 0)) { headers['Permissions-Policy'] = 'interest-cohort=()'; } // Remove Google's FLoC Network, only send this if Chrome browser
6738 if ((parent.config.settings.allowframing !== true) && (typeof parent.config.settings.allowframing !== 'string')) { headers['X-Frame-Options'] = 'sameorigin'; }