[gelöst] Content Security Policy - Nginx

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
irgendwas
Beiträge: 278
Registriert: 04.04.2016 18:53:19
Lizenz eigener Beiträge: MIT Lizenz

[gelöst] Content Security Policy - Nginx

Beitrag von irgendwas » 12.04.2017 10:23:33

Hallo zusammen,

ich beschäftige mich (wieder mal) mit der Sicherheit meines Nextcloud Servers.
Im Moment erhalte ich von dem securityheaders.io Test zwar eine Note A (A+ nicht möglich, weil Public Key Pinning wegen Letsencrypt Zertifikat ausscheidet), allerdings mit der Warnung
Content-Security-Policy This policy contains 'unsafe-eval' which is dangerous in the script-src directive.
Ich finde leider keine gute Erklärung, wie ich das unter nginx umsetzen/ändern kann. Meine aktuelle config sieht so aus:

Code: Alles auswählen

server {
   [..]
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
    add_header X-Content-Type-Options nosniff;
    add_header Referrer-Policy "no-referrer";
   [..]
}
Wenn ich dann ein

Code: Alles auswählen

add_header Content-Security-Policy "default-src 'self';";
hinzufüge, erhalte ich die Warnung zwar nicht mehr, aber dafür
Content-Security-Policy There was a duplicate Content-Security-Policy header.
Vielleicht steh ich grad etwas auf dem Schlauch, aber so wirklich komm ich nicht weiter. Würd mich freuen, wenn mir jemand den entscheidenden Tipp geben könnte :hail:


EDIT: Liegt wohl nicht an nginx, sondern an Nextcloud. In der Datei "/lib/private/legacy/response.php" wird der Header "modifiziert". Mir persönlich war die Methode über php völlig unbekannt - kannte bisher nur die via htaccess und die für nginx. Naja, man lernt nie aus :mrgreen:

Code: Alles auswählen

        public static function addSecurityHeaders() {
                /**
                 * FIXME: Content Security Policy for legacy ownCloud components. This
                 * can be removed once \OCP\AppFramework\Http\Response from the AppFramework
                 * is used everywhere.
                 * @see \OCP\AppFramework\Http\Response::getHeaders
                 */
                $policy = 'default-src \'self\'; '
                        . 'script-src \'self\' \'unsafe-eval\' \'nonce-'.\OC::$server->getContentSecurityPolicyNonceManager()->getNonce().'\'; '
                        . 'style-src \'self\' \'unsafe-inline\'; '
                        . 'frame-src *; '
                        . 'img-src * data: blob:; '
                        . 'font-src \'self\' data:; '
                        . 'media-src *; ' 
                        . 'connect-src *';
                header('Content-Security-Policy:' . $policy);

                // Send fallback headers for installations that don't have the possibility to send
                // custom headers on the webserver side
                if(getenv('modHeadersAvailable') !== 'true') {
                        header('X-XSS-Protection: 1; mode=block'); // Enforce browser based XSS filters
                        header('X-Content-Type-Options: nosniff'); // Disable sniffing the content type for IE
                        header('X-Frame-Options: Sameorigin'); // Disallow iFraming from other domains
                        header('X-Robots-Tag: none'); // https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag
                        header('X-Download-Options: noopen'); // https://msdn.microsoft.com/en-us/library/jj542450(v=vs.85).aspx
                        header('X-Permitted-Cross-Domain-Policies: none'); // https://www.adobe.com/devnet/adobe-media-server/articles/cross-domain-xml-for-streaming.html
                }
        }

tas2580
Beiträge: 1
Registriert: 14.04.2017 06:55:35

Re: [gelöst] Content Security Policy - Nginx

Beitrag von tas2580 » 14.04.2017 07:57:38

Zwecks HPKP und Let's Encrypt schau mal bei https://reraise.eu/2016/06/30/let-s-enc ... t-practice
Funktioniert bei mir wunderbar.

Gruß Tobi

Antworten