УВЕДОМЛЕНИЕ : пересмотренная проблема ниже в разделе РЕДАКТИРОВАНИЯ.
Я изучал Content-Security-Policies в попытке изучить различные концепции безопасности, потому что я строю сайт с нуля. Я понимаю, что это может быть не так уж сложно, так как я не буду получать никакой пользовательской информации, однако я хочу изучить эти концепции и начать применять их, чтобы защитить мой сайт от таких вещей, как Javascript инъекция.
В моем файле server.js
я обслуживаю свои страницы с помощью Express в следующем коде:
app.get("/", (req, res) => {
res.sendFile(path.join(__dirname, "/views/home.html"));
});
Чтобы добавить Content-Security-Policy (CSP) в код моего сервера, я добавил следующий код перед вышеуказанным кодом и перед использованием Express для обслуживания stati c файлов:
//the following code is called right after the creation of the express server
app.use(function(req, res, next) {
res.setHeader("Content-Security-Policy", "default-src 'self'; script-src 'self' https://apis.google.com");
return next();
});
//static css/js/img files served here:
app.use('/public', express.static(__dirname + '/public'));
//then the app.get method I defined above
Я перезапустил сервер узлов, открыл up chrome, перешел на http://localhost: 8080 , где я слушаю сайт своего узла, и, как и ожидалось, моя домашняя страница не загружала различные внешние скрипты, CDN и внешние стили, которые у меня есть в мой проект.
Увидев, что CSP работает, я решил удалить всю функцию app.use
, которая устанавливает CSP, чтобы я мог создать свой список директив, чтобы я мог добавить CSP позже.
Я удалил этот блок кода, сохранил, перезапустил сервер узлов, и когда я открыл Google Chrome, я все еще получал уведомления на вкладке безопасности в Chrome Инструментах разработки, говоря, что все мои внешний контент блокировался из-за нарушения директив "default-src 'self'"
или "script-src 'self'"
- опять же, это после Я удалил приведенный выше код CSP из файла моего сервера. Однако, когда я открыл свое приложение в Safari, все загрузилось нормально. Почему Chrome по-прежнему блокирует контент, даже если я удалил код для установки CSP в заголовках HTTP в коде моего сервера?
EDIT: в итоге я сбросил настройки Chrome, которые устранили проблему. Тем не менее, я не уверен, какой параметр установить в go в Chrome сейчас, вместо того, чтобы сбросить все настройки. Также очевидно, что CSP применяется только к домашней странице в этом случае, мне нужно будет установить CSP в методе GET каждой html страницы, да?