nodeJS https - невозможно установить Content-Security-Policy - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь написать простой HTTPS-сервер NodeJS, использующий HTTPS и Express, с настраиваемой политикой безопасности содержимого.

Я пытаюсь установить атрибут заголовка Content-Security-Policy в объекте ответа сервера, но всегда просто отправляет "default-src 'self'". похоже, что модуль HTTPS перезаписывает все, что я указываю.

Я также пытался использовать пакет hat-csp npm, но безуспешно.

Вот мой фрагмент кода:

var app = express();
var sslOptions = {
    cert: fs.readFileSync(ourPath + "/certs/server.crt"),
    key: fs.readFileSync(ourPath + "/certs/server.pem")
};
var httpsServer = https.createServer(sslOptions, app);

var server = httpsServer.listen(secPort /*443*/, function () {
    console.log('HTTPS Server listening at port %d', secPort);
});

// Trap the incoming request, and preset the CSP in the response header
server.on('request',(req,res)=>{
    res.setHeader("Content-Security-policy","* 'inline-eval';");
});

1 Ответ

0 голосов
/ 12 сентября 2018

Вам просто нужно установить его в заголовке HTTP, а не в HTML.Это рабочий пример с Express 4 со статическим сервером:

var express = require('express');
var app = express();


app.use(function(req, res, next) {
    res.setHeader("Content-Security-Policy", "script-src 'self' https://apis.google.com");
    return next();
});

app.use(express.static(__dirname + '/'));

app.listen(process.env.PORT || 3000);

Если вам нужна дополнительная информация о CSP, это отличная статья: http://www.html5rocks.com/en/tutorials/security/content-security-policy/

Надеюсь, это поможет!

...