Почему политика безопасности контента не работает? - PullRequest
0 голосов
/ 12 октября 2019

Я получаю следующую ошибку:

analytics.min.js:9 Refused to load the script 'https://cdn.amplitude.com/libs/amplitude-5.2.2-min.gz.js' because it violates the following Content Security Policy directive: "script-src 'self'

      https://apis.google.com
      https://cdnjs.cloudflare.com
      https://cdn.segment.com
      https://ajax.googleapis.com
      https://*.woopra.com
      [...]

      http://www.luckyorange.com https://ssl.luckyorange.com https://d10lpsik1i8c69.cloudfront.net". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.

в моем сбое . Это моя первая попытка подключения к базе данных MongoDB

. После некоторого исследования этой ошибки, я думаю, что наконец-то начинаю понимать, что такое политика безопасности контента и как она предотвращает XSS,но у меня все еще были проблемы с тем, как реализовать включение сайта в мой проект.

Из статьи MDN Я нашел синтаксис для реализации этого: Content-Security-Policy: <policy-directive>; <policy-directive>, но не был уверен, к чему это относится, в какой файл его поместить.

Iпроделал еще несколько копаний и нашел html-реализацию в этой статье stackoverflow .

После некоторого возни с этим и устранения другой ошибки, связанной с пропуском атрибута samesite, я наконец-то дошел до строки, которая, по моему мнению, должна работать: <meta http-equiv="Content-Security-Policy" content="default-src 'https://cdn.amplitude.com/libs/' 'unsafe-inline'" samesite="none">;однако это не так.

index.html:

<!DOCTYPE html>
<html>
  <head>
    <title>Welcome to HyperDev!</title>
    <meta name="" content="A cool thing made with HyperDev">
    <link rel="shortcut icon" href="https://cdn.hyperdev.com/us-east-1%3A52a203ff-088b-420f-81be-45bf559d01b1%2Ffavicon.ico" type="image/x-icon"/>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="Content-Security-Policy" content="default-src 'https://cdn.amplitude.com/libs/' 'unsafe-inline'" samesite="none">
    <style>
      body {
        background-color: #ddd;
        color: #333;
        font-family: sans-serif;
        text-align: center;
      }
    </style>
  </head>
</html>

package.json:

{
  "name": "fcc-mongo-mongoose-challenges",
  "version": "0.0.1",
  "description": "A boilerplate project",
  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "express": "^4.16.4",
    "body-parser": "^1.19.0",
    "mongoose": "^5.7.4",
    "mongodb": "^3.3.2"
  },
  "engines": {
    "node": "4.4.5"
  },
  "repository": {
    "type": "git",
    "url": "https://hyperdev.com/#!/project/welcome-project"
  }
}

myApp.js:

const mongoose = require('mongoose');
mongoose.connect(process.env.MONGO_URI, {useNewUrlParser: true, useUnifiedTopology: true})
.catch(e=>console.log(e));

Не проходит этот тест на freecodecamp. Скорее всего, из-за ошибки, указанной выше, база данных не подключается.

...