Tôi đang cố gắng thiết lập một CSP rất nghiêm ngặt trên trang web của mình trong khi chuyển từ WordPress sang Ghost và tôi nghĩ rằng tôi đang thiếu một cái gì đó rất rõ ràng.
Tôi đã xem qua các tài liệu và đang làm những gì tôi nghĩ là tôi phải làm, nhưng một cái gì đó không hoạt động. CSP của tôi xác thực trên trình xác thực CSP của Google và khi tôi kiểm tra các tập lệnh bằng cách thực hiện curl | sha256sum Tôi nhận được tổng kiểm tra tương tự, mà tôi đã thêm vào chính sách của mình. Tuy nhiên, khi duyệt trang web, các tập lệnh bị từ chối vì chúng không xác thực.
Tôi biết lý do tại sao các tập lệnh nội tuyến không tải, vì tôi chưa tìm ra phần nonce nào, nhưng tôi hình dung tôi sẽ làm được điều đó sau khi tôi chạy phần chính.
Tôi đang chạy NGINX mới nhất và bản cài đặt Ghost hoàn toàn mới trên Ubuntu 18.04, với MariaDB.
Các tiêu đề CSP mà tôi thêm vào trang web thông qua tệp conf NGINX cho trang web, nhưng như sau. Điều này được trình bày dưới đây theo cách có thể đọc được, trong tệp cấu hình NGINX thực tế của tôi, mọi thứ đều nằm trên một dòng vì nếu không tôi gặp lỗi giao thức HTTPS:
add_header Content-Security-Policy "base-uri 'self' https://beta.robbiecrash.me;
default-src 'self' https://beta.robbiecrash.me;
object-src 'none';
connect-src 'self';
font-src 'self';
frame-src www.youtube.com;
img-src 'self';
script-src 'strict-dynamic'
'sha256-QT9FPilWNRx81jNnzwGg8aKVftFHsTMs7UcdGqgPGBY='
'sha256-DfwnDueq8Kk23IWsFe1JOHznwCCIIYaJcBnt+SCv7y8='
'sha256-bj/JlIND2F1ZRARRwS8t4d22whMq5QMxT2rGs/hyGKg='
'sha256-psNZvEVSwudZCmMthmvN/ol/ZqTA/e6EBRnRmxq0gyU='
'sha256-BSJSoYL3U/h9xfMICRiRZw/GId8TxSgDkqr3/yGkXaM='
'sha256-G1YPIho+4GJ3Mx5AW5VrOE1e94MKZDtODCVxibet+Ic='
'sha256-VXclGR1TDdlJWafKXNnziC4NWnKSUF5eCMGLHBXTwOs='
'sha256-ToHDftw1HI6v/zp4y9Ua7GWD/lduxaBPhYXOpJ+pheY='
'sha256-EbIleRp3k4KblfrrVZx2y5CZ6W+uPnYpuvdugay1SLE='
'sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4='
'sha256-jTGzLAqOAcOL+ALD2f2tvFY7fs6dwkOeo88xiuVHaRk='
'sha256-uURSbWfSLHhi+UpdPjpowvdJK8c/9pV7tbNDEvSL6cM='
'sha256-Ch5rv5tgAdVMCh7Wqb0UOcXkQAHNFSezi+0v/0z6xfw='
'sha256-Cnsy1D8mpJ5y4oRYZnhMnNxD51Cc1hHiQX33Jckfcn0='
'unsafe-inline'
inline: 'self';
style-src
'sha256-N1K43s+8twRa+tzzoF3V8EgssdDiZ6kd9r8Rfgg8kZU='
'sha256-+UKXHR4SMd37yUxqCERfCWTT8gUc3QPJ/UXlvgcE74A='
'sha256-J5oxR0L06zUscYq2mIlVVL5xpZ+Y5NBcit/F+Zh7ei4='
'sha256-Drj3vHAhMI5tuKJTEjwJwQRAsZDcF463bO0KllBipH0='
'sha256-T8cuZtWj79tY0DXOgszGq42DByRWbdRQULuIYGfFx6s='
inline: 'self';
script-src-elem cdnjs.cloudflare.com code.jquery.com inline: 'self';
style-src-attr inline: 'self';
style-src-elem cdnjs.cloudflare.com 'self' inline: 'self';";
Ví dụ: tập lệnh: https://beta.robbiecrash.me/public/ghost-sdk.min.js?v=9f1aeb2053
Khi tôi cuộn tròn nó, tổng kiểm tra:
413f453e2956351c7cd63367cf01a0f1a2957ed147b1332ced471d1aa80f1816
Chuyển đổi thành sau trong Base64:
QT9FPilWNRx81jNnzwGg8aKVftFHsTMs7UcdGqgPGBY=
Đó là mục nhập sha256- đầu tiên trong script-src của tôi. Trang web, như hiện tại, có thể truy cập tại https://beta.robbiecrash.me
Tôi đã hoàn toàn hiểu sai về cách CSP được thiết lập? Đây có phải là vì tôi đang thiết lập các chỉ thị mới, nhưng không hoàn toàn điền chúng? Chrome báo cáo các chỉ thị này bị bỏ qua vì tôi chưa kích hoạt chúng trong chrome: // flags.