Почему я получаю отчет Content-Security-Policy из простого сообщения «Hello World»? - PullRequest
0 голосов
/ 21 октября 2018

Я хотел поиграть с Content-Security-Policy.Я создал следующую программу, которая

  • устанавливает для Content-Security-Policy-Report-Only-default значение по умолчанию-src
  • Просто печатает «Hello World»
  • Отвечает наПост (отчет CSP) путем записи в командную строку

Вот мой код:

#!/usr/bin/python
from http.server import HTTPServer, BaseHTTPRequestHandler
from io import BytesIO

class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        self.send_response(200)
        self.send_header("Content-type", "text/html")
        self.send_header("Content-Security-Policy-Report-Only", "default-src; report-uri /")
        self.end_headers()
        self.wfile.write(b'Hello, world!')

    def do_POST(self):
        content_length = int(self.headers['Content-Length'])
        body = self.rfile.read(content_length)
        self.send_response(200)
        self.end_headers()
        response = BytesIO()
        response.write(body)
        print(body)
        self.wfile.write(response.getvalue())

httpd = HTTPServer(('localhost', 8000), SimpleHTTPRequestHandler)
print ("Serving on http://localhost:8000")
httpd.serve_forever()

Я посещаю http://localhost:8000 в моем браузере, и вот чтоЯ получаю:

'{"csp-report":{"blocked-uri":"","document-uri":"http://localhost:8000/","line-number":1,"original-policy":"default-src \'none\'; report-uri http://localhost:8000/","referrer":"","script-sample":";(function installGlobalHook(window) {\\n ...","source-file":"http://localhost:8000/","violated-directive":"default-src"}}'

Что это?Я попробовал это в режиме инкогнито, чтобы убедиться, что расширения не запущены.

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Инкогнито не останавливает надстройки в конце концов.Нарушение исходило от инструментов реакции-разработчика.Отключение этого исправило проблему.

enter image description here

0 голосов
/ 22 октября 2018

default-src - это директива, которая определяет откуда можно загружать ресурсы.Пустое значение по умолчанию равно «none», поэтому в ответе содержится "violated-directive":"default-src".Вы должны изменить его на «self» в do_GET ():

self.send_header("Content-Security-Policy-Report-Only", "default-src 'self'; report-uri /")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...