Hướng dẫn generate nonce javascript - tạo nonce javascript

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');
4 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

<script nonce="{{{nonce}}}" src="http://example.com/file.js">

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');
5 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');
6 cho điều này: https://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.4492 Huy hiệu vàng25 Huy hiệu bạc44 Huy hiệu đồng2 gold badges25 silver badges44 bronze badges

2

Bạn có thể sử dụng

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

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

Hướng dẫn generate nonce javascript - tạo nonce javascript

RubenlagunarubenlagunaRubenLaguna

19.4K12 Huy hiệu vàng98 Huy hiệu bạc133 Huy hiệu đồng12 gold badges98 silver badges133 bronze badges

Không có cách nào tốt nhất để làm điều này. Bạn có thể làm theo bất kỳ cách nào bạn thích, miễn là kết quả phù hợp với yêu cầu của bạn. Để minh họa, tôi đã tạo ra nhiều ví dụ khác nhau, tất cả sẽ cung cấp cùng một kết quả cuối cùng

Nội dung chính ShowShow

  • Sử dụng Trình tạo chuỗi ngẫu nhiên
  • Loại trình tạo chuỗi ngẫu nhiên mà chúng tôi đã thảo luận trong chương này
  • Tạo một chuỗi ngẫu nhiên
  • Tiếp cận 1:
  • Tạo chuỗi alpha-numeric ngẫu nhiên
  • Tiếp cận 1:
  • Tạo chuỗi alpha-numeric ngẫu nhiên
  • Tiếp cận 2:
  • Có một chức năng ngẫu nhiên trong JavaScript?
  • Đối tượng nào có thể được sử dụng để tạo số ngẫu nhiên trong JavaScript?
  • Làm thế nào để bạn xáo trộn một chuỗi trong javascript?

Đầu tiên, chuyển đổi chuỗi thành một mảng bằng phương thức Split ().Sau đó, gọi phương thức Sắp xếp () của mảng.Trong định nghĩa hàm của nó, trả về một giá trị ngẫu nhiên (-ve, 0, +ve) mỗi khi nó được gọi.Sau đó, onvert mảng bị xáo trộn trở lại một chuỗi bằng phương thức nối ().

Không có cách nào tốt nhất để làm điều này. Bạn có thể làm theo bất kỳ cách nào bạn thích, miễn là kết quả phù hợp với yêu cầu của bạn. Để minh họa, tôi đã tạo ra nhiều ví dụ khác nhau, tất cả sẽ cung cấp cùng một kết quả cuối cùngfastest solution and most readable. It basically does the same as the accepted solution, except it is a bit faster.

function readableRandomStringMaker(length) {
  for (var s=''; s.length < length; s += 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'.charAt(Math.random()*62|0));
  return s;
}
console.log(readableRandomStringMaker(length));
// e3cbN

Nội dung chính Showcompact, recursive version which is much less readable:

const compactRandomStringMaker = (length) => length-- && "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".charAt(Math.random()*62|0) + (compactRandomStringMaker(length)||"");
console.log(compactRandomStringMaker(5));
// DVudj

Sử dụng Trình tạo chuỗi ngẫu nhiênmore compact one-liner:

Array(5).fill().map(()=>"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".charAt(Math.random()*62)).join("")
// 12oEZ

Loại trình tạo chuỗi ngẫu nhiên mà chúng tôi đã thảo luận trong chương này

"     ".replaceAll(" ",()=>"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".charAt(Math.random()*62))

Tạo một chuỗi ngẫu nhiênmost compact one-liner, but inefficient and unreadable - it adds random characters and removes illegal characters until length is l:

((l,f=(p='')=>p.length<l?f(p+String.fromCharCode(Math.random()*123).replace(/[^a-z0-9]/i,'')):p)=>f())(5)

Tiếp cận 1:

[...crypto.getRandomValues(new Uint8Array(999))].map((c)=>String.fromCharCode(c).replace(/[^a-z0-9]/i,'')).join("").substr(0,5)
// 8fzPq

Tạo chuỗi alpha-numeric ngẫu nhiên

const crypto = require('crypto');
let nonce = crypto.randomBytes(16).toString('base64');
0

Tiếp cận 2:nameless recursive arrow function:

const crypto = require('crypto');
let nonce = crypto.randomBytes(16).toString('base64');
1

Làm thế nào để bạn tạo một chuỗi ngẫu nhiên?"magic" variable which provides a random character every time you access it:

const crypto = require('crypto');
let nonce = crypto.randomBytes(16).toString('base64');
2

Hầu hết các câu trả lời khác trên trang này bỏ qua yêu cầu ký tự trường hợp trên.

const crypto = require('crypto');
let nonce = crypto.randomBytes(16).toString('base64');
3

Đây là giải pháp nhanh nhất của tôi và dễ đọc nhất. Về cơ bản, nó làm giống như giải pháp được chấp nhận, ngoại trừ nó nhanh hơn một chút.fastest solution and most readable. It basically does the same as the accepted solution, except it is a bit faster.

Đây là một phiên bản đệ quy nhỏ gọn, không dễ đọc:compact, recursive version which is much less readable:Math.random() function of JavaScript.

Sử dụng Trình tạo chuỗi ngẫu nhiên

Loại trình tạo chuỗi ngẫu nhiên mà chúng tôi đã thảo luận trong chương này

Tạo một chuỗi ngẫu nhiên

Loại trình tạo chuỗi ngẫu nhiên mà chúng tôi đã thảo luận trong chương này

Bạn sẽ thấy hai loại Trình tạo chuỗi ngẫu nhiên:

  • Tạo chuỗi ngẫu nhiên đơn giản
  • Tạo chuỗi alpha-numeric ngẫu nhiên

Chúng tôi có hai loại trình tạo chuỗi này. Trong loại trình tạo chuỗi ngẫu nhiên đầu tiên này, chúng tôi sẽ tạo một chương trình JavaScript của Trình tạo chuỗi ngẫu nhiên sẽ chỉ tạo chuỗi chữ cái.

Ở đầu bên kia, trong loại trình tạo chuỗi thứ hai, chúng tôi sẽ tạo một chương trình JavaScript để tạo các chuỗi alpha-numeric ngẫu nhiên. Xem các ví dụ cho cả hai trình tạo chuỗi một cách chi tiết:

Tạo một chuỗi ngẫu nhiên

Ở đây, chúng tôi sẽ tạo một chương trình để tạo một chuỗi ngẫu nhiên:

Tiếp cận 1:

Cách tiếp cận này sẽ tạo ra một chuỗi ngẫu nhiên đơn giản bằng cách chọn một số ký tự một cách ngẫu nhiên với độ dài được chỉ định. Đây sẽ là một chuỗi đơn giản thay vì một chuỗi alpha-numeric. Làm theo các bước dưới đây:

  1. Tạo một chức năng do người dùng xác định và xác định một biến có tất cả các bảng chữ cái tiếng Anh bằng các chữ cái nhỏ và viết hoa.
  2. Xác định độ dài cho chuỗi ngẫu nhiên mới được tạo.
  3. Khai báo một biến trống mới (var ngẫu nhiênString = '';) để giữ chuỗi được tạo.
  4. Bây giờ, đi qua chuỗi bằng cách sử dụng cho vòng lặp. Nó sẽ tạo ra một ký tự mới trong mỗi lần lặp.
  5. Bên trong vòng lặp này, hãy sử dụng phương thức math.random () của javascript để tạo một ký tự ngẫu nhiên từ biến chuỗi được chỉ định ở trên (A-Z, A-Z) bằng cách tính toán một chỉ mục ngẫu nhiên.
  6. Phương pháp sàn () để làm tròn giá trị. Điều này sẽ được sử dụng như Math.Floor (Math.Random () * ký tự.LEPT).

Chuyển đổi các bước trên trong triển khai mã thực tế để xem kết quả. Nhìn vào mã JavaScript bên dưới:

Sao chép mã

Kiểm tra nó ngay bây giờ

Chạy mã trong trình duyệt của bạn và nhận kết quả giống như được đưa ra trong ảnh chụp màn hình dưới đây:

Đầu ra 1

Đầu ra 2

Nhấp vào nút này tạo nút chuỗi ngẫu nhiên và điều này sẽ tạo ra một chuỗi ngẫu nhiên cho bạn.Generate Random String button, and this will generate a random string for you.Generate Random String button, and this will generate a random string for you.

Đầu ra 3

Bất cứ khi nào bạn nhấp vào nút này, nó sẽ tạo ra một mẫu các ký tự ngẫu nhiên mới (chuỗi ngẫu nhiên) có độ dài 7. Xem ảnh chụp màn hình bên dưới:

Tạo chuỗi alpha-numeric ngẫu nhiên

Chúng tôi có hai loại trình tạo chuỗi này. Trong loại trình tạo chuỗi ngẫu nhiên đầu tiên này, chúng tôi sẽ tạo một chương trình JavaScript của Trình tạo chuỗi ngẫu nhiên sẽ chỉ tạo chuỗi chữ cái.

Tiếp cận 1:

Cách tiếp cận này sẽ tạo ra một chuỗi ngẫu nhiên đơn giản bằng cách chọn một số ký tự một cách ngẫu nhiên với độ dài được chỉ định. Đây sẽ là một chuỗi đơn giản thay vì một chuỗi alpha-numeric. Làm theo các bước dưới đây:

  1. Tạo một chức năng do người dùng xác định và xác định một biến có tất cả các bảng chữ cái tiếng Anh bằng các chữ cái nhỏ và viết hoa.
  2. Xác định độ dài cho chuỗi ngẫu nhiên mới được tạo.
  3. Xác định độ dài cho chuỗi ngẫu nhiên mới được tạo.
  4. Khai báo một biến trống mới (var ngẫu nhiênString = '';) để giữ chuỗi được tạo.
  5. Bây giờ, đi qua chuỗi bằng cách sử dụng cho vòng lặp. Nó sẽ tạo ra một ký tự mới trong mỗi lần lặp.
  6. Bên trong vòng lặp này, hãy sử dụng phương thức math.random () của javascript để tạo một ký tự ngẫu nhiên từ biến chuỗi được chỉ định ở trên (A-Z, A-Z) bằng cách tính toán một chỉ mục ngẫu nhiên.
  7. Phương pháp sàn () để làm tròn giá trị. Điều này sẽ được sử dụng như Math.Floor (Math.Random () * ký tự.LEPT).

Chuyển đổi các bước trên trong triển khai mã thực tế để xem kết quả. Nhìn vào mã JavaScript bên dưới:

Sao chép mã

Kiểm tra nó ngay bây giờ

Chạy mã trong trình duyệt của bạn và nhận kết quả giống như được đưa ra trong ảnh chụp màn hình dưới đây:

Đầu ra 1

Đầu ra 2

Nhấp vào nút này tạo nút chuỗi ngẫu nhiên và điều này sẽ tạo ra một chuỗi ngẫu nhiên cho bạn.Generate Random String button, and this will generate a random string for you.Generate Random String button, and this will generate a random string for you.

Đầu ra 3

Bất cứ khi nào bạn nhấp vào nút này, nó sẽ tạo ra một mẫu các ký tự ngẫu nhiên mới (chuỗi ngẫu nhiên) có độ dài 7. Xem ảnh chụp màn hình bên dưới:

Có hai cách tiếp cận được thảo luận dưới đây để tạo ra một chuỗi alpha-numeric ngẫu nhiên:

Tiếp cận 2:

Bây giờ, chúng ta có một cách tiếp cận khác sẽ tạo ra một chuỗi alpha-numeric với độ dài được chỉ định. Đó là một cách tiếp cận rất ngắn để tạo ra một chuỗi ngẫu nhiên. Điều này không yêu cầu quá nhiều mã dài. Trong phương pháp này, chúng tôi sẽ không chỉ định độ dài cho chuỗi mới được tạo. Nó sẽ mất độ dài 10 hoặc 11 của chuỗi mới.

  1. Thực hiện theo các bước cơ bản để tạo chuỗi Alpha-Numeric ngẫu nhiên:
  2. Tạo một chức năng do người dùng xác định có sẽ bao gồm tất cả các bước dưới đây bên trong nó.random() method to generate a random number.
  3. Đầu tiên, sử dụng phương thức ngẫu nhiên () để tạo một số ngẫu nhiên.random() method to generate a random number.toString(36) to convert the base to 36 (26 chars + 0 to 9). In these 36 characters it has alpha-numeric characters includes 26 alphabets and 0 to 9 numbers.
  4. Cuối cùng, sử dụng lát cắt () để có được phần của chuỗi được bắt đầu từ vị trí 2.slice() to get the part of string that is started from position 2.slice() to get the part of string that is started from position 2.

Chuyển đổi các bước trên trong triển khai mã thực tế để xem kết quả. Nhìn vào mã JavaScript bên dưới:

Sao chép mã

Kiểm tra nó ngay bây giờ

Đầu ra 1

Lưu tệp và chạy mã trên trong trình duyệt của bạn. Ban đầu, bạn sẽ nhận được kết quả giống như được đưa ra trong ảnh chụp màn hình dưới đây:

Đầu ra 2

Tại đây, nhấp vào nút Tạo chuỗi để tạo chuỗi Alpha-Numeric ngẫu nhiên và xem đầu ra:Generate String button to generate the random alpha-numeric string and see the output:Generate String button to generate the random alpha-numeric string and see the output:

Đầu ra 3

Nó sẽ tạo ra một mẫu mới mỗi lần khi bạn nhấp vào nút tạo chuỗi này. Nhấp và kiểm tra các mẫu chuỗi Alpha-Numeric khác nhau:Generate String button. Click and check different alpha-numeric string patterns:Generate String button. Click and check different alpha-numeric string patterns:

Note:

Trong cách tiếp cận 1, bạn có thể xác định độ dài (số lượng ký tự) cho chuỗi ngẫu nhiên mới. Nhưng mà,

Trong cách tiếp cận 2, bạn không thể xác định độ dài của chuỗi mới sẽ được tạo. Sử dụng bất kỳ phương pháp nào trong trang web của bạn theo yêu cầu của bạn.


Làm thế nào để bạn tạo một chuỗi ngẫu nhiên?

Một chuỗi ngẫu nhiên được tạo bằng cách tạo ra một luồng các số giá trị ASCII ngẫu nhiên cho các ký tự 0-9, A-Z và A-Z. Tất cả các giá trị số nguyên được tạo sau đó được chuyển đổi thành các ký tự tương ứng của chúng sau đó được gắn vào một chuỗi.first generating a stream of random numbers of ASCII values for 0-9, a-z and A-Z characters. All the generated integer values are then converted into their corresponding characters which are then appended to a StringBuffer.first generating a stream of random numbers of ASCII values for 0-9, a-z and A-Z characters. All the generated integer values are then converted into their corresponding characters which are then appended to a StringBuffer.

Có một chức năng ngẫu nhiên trong JavaScript?

Trong javascript, ngẫu nhiên () là một hàm được sử dụng để trả về số giả ngẫu nhiên hoặc số ngẫu nhiên trong một phạm vi.Vì hàm ngẫu nhiên () là hàm tĩnh của đối tượng toán học, nó phải được gọi qua đối tượng giữ chỗ được gọi là toán học.random() is a function that is used to return a pseudo-random number or random number within a range. Because the random() function is a static function of the Math object, it must be invoked through the placeholder object called Math.random() is a function that is used to return a pseudo-random number or random number within a range. Because the random() function is a static function of the Math object, it must be invoked through the placeholder object called Math.

Đối tượng nào có thể được sử dụng để tạo số ngẫu nhiên trong JavaScript?

Math.random () hàm math.random () trả về số điểm nổi, giả ngẫu nhiên lớn hơn hoặc bằng 0 và nhỏ hơn 1, với phân phối xấp xỉ trên phạm vi đó-mà sau đó bạn có thể mở rộng theo mong muốn của mìnhphạm vi. The Math.random() function returns a floating-point, pseudo-random number that's greater than or equal to 0 and less than 1, with approximately uniform distribution over that range — which you can then scale to your desired range. The Math.random() function returns a floating-point, pseudo-random number that's greater than or equal to 0 and less than 1, with approximately uniform distribution over that range — which you can then scale to your desired range.

Làm thế nào để bạn xáo trộn một chuỗi trong javascript?

Đầu tiên, chuyển đổi chuỗi thành một mảng bằng phương thức Split ().Sau đó, gọi phương thức Sắp xếp () của mảng.Trong định nghĩa hàm của nó, trả về một giá trị ngẫu nhiên (-ve, 0, +ve) mỗi khi nó được gọi.Sau đó, onvert mảng bị xáo trộn trở lại một chuỗi bằng phương thức nối ().