Javascript tạo nonce

Thuộc tính toàn cầu

<script nonce="8IBTHwOdqNKAWeKl7plt8g==">
  // …
script>
1 là một thuộc tính nội dung xác định nonce mật mã ("số được sử dụng một lần") có thể được Chính sách bảo mật nội dung sử dụng để xác định liệu một lần tìm nạp nhất định có được phép tiến hành cho một phần tử nhất định hay không

Show

Thuộc tính

<script nonce="8IBTHwOdqNKAWeKl7plt8g==">
  // …
script>
1 hữu ích để đưa các phần tử cụ thể vào danh sách cho phép, chẳng hạn như một tập lệnh nội dòng cụ thể hoặc các phần tử kiểu. Nó có thể giúp bạn tránh sử dụng chỉ thị CSP
<script nonce="8IBTHwOdqNKAWeKl7plt8g==">
  // …
script>
3, chỉ thị này sẽ đưa tất cả các tập lệnh hoặc kiểu nội tuyến vào danh sách cho phép

Ghi chú. Chỉ sử dụng

<script nonce="8IBTHwOdqNKAWeKl7plt8g==">
  // …
script>
1 cho các trường hợp bạn không thể sử dụng nội dung tập lệnh hoặc kiểu nội tuyến không an toàn. Nếu bạn không cần
<script nonce="8IBTHwOdqNKAWeKl7plt8g==">
  // …
script>
1, đừ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 hàm băm CSP để thay thế. (Xem ghi chú sử dụng trên. ) Luôn cố gắng tận dụng tối đa các biện pháp bảo vệ CSP và tránh các nonce hoặc tập lệnh nội tuyến không an toàn bất cứ khi nào có thể

Có một số bước liên quan để đưa tập lệnh nội tuyến vào danh sách cho phép bằng cách sử dụng cơ chế nonce

Tạo giá trị

Từ máy chủ web của bạn, tạo một chuỗi mã hóa base64 ngẫu nhiên gồm ít nhất 128 bit dữ liệu từ trình tạo số ngẫu nhiên được bảo mật bằng mật mã. Nonce phải được tạo khác nhau mỗi khi tải trang (nonce chỉ một lần. ). Ví dụ, trong nodejs

const crypto = require("crypto");
crypto.randomBytes(16).toString("base64");
// '8IBTHwOdqNKAWeKl7plt8g=='

Tập lệnh nội tuyến cho phép vào danh sách cho phép

Nonce được tạo trên mã phụ trợ của bạn giờ sẽ được sử dụng cho tập lệnh nội tuyến mà bạn muốn đưa vào danh sách cho phép

<script nonce="8IBTHwOdqNKAWeKl7plt8g==">
  // …
script>

Gửi một nonce với tiêu đề CSP

Cuối cùng, bạn sẽ cần gửi giá trị nonce trong tiêu đề

<script nonce="8IBTHwOdqNKAWeKl7plt8g==">
  // …
script>
1 (điền trước
<script nonce="8IBTHwOdqNKAWeKl7plt8g==">
  // …
script>
2)

Content-Security-Policy: script-src 'nonce-8IBTHwOdqNKAWeKl7plt8g=='

Vì lý do bảo mật, thuộc tính nội dung

<script nonce="8IBTHwOdqNKAWeKl7plt8g==">
  // …
script>
1 bị ẩn (một chuỗi trống sẽ được trả về)

script.getAttribute("nonce"); // returns empty string

Thuộc tính

<script nonce="8IBTHwOdqNKAWeKl7plt8g==">
  // …
script>
1 là cách duy nhất để truy cập nonces

script.nonce; // returns nonce value

Ẩn nonce giúp ngăn kẻ tấn công lấy cắp dữ liệu nonce 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

Chúng ta sẽ có 2 phương thức là HttpProvider và Websocket provider. Chúng ta sẽ bắt đầu với nhà cung cấp websocket

//import thứ viện Web3js
var Web3 = require('web3');
var web3 = new Web3();

//thiết lập websocket provider
web3.setProvider(new web3.providers.WebsocketProvider('wss://ropsten.infura.io/ws'));

Tiếp theo, chúng ta sẽ tạo ra 2 ví để có thể thực hiện việc tạo một giao dịch

Create ví

________số 8

Ở bước này, mỗi tài khoản đã sinh ra là một hợp đồng tương ứng với một địa chỉ và privateKey duy nhất.
Sau đó, chúng tôi sẽ cấp tiền ảo cho ví bằng cách truy cập Vòi Ropsten Ethereum nhập địa chỉ ví (địa chỉ) như hình.

Javascript tạo nonce

Tiếp theo, chúng ta có thể truy cập vào https. //ropsten. etherscan. io và xem thông tin số dư ví của mình hoặc truy cập địa chỉ https. //ropsten. etherscan. io/địa chỉ/

Tạo giao dịch

Để đăng ký một giao dịch, chúng ta sử dụng hàm signTransaction với một privateKey

web3.eth.accounts.signTransaction(tx, privateKey [, callback]);

Translator number

tx - Đối tượng. Đối tượng giao dịch như sau

  • nonce - Chuỗi. (tùy chọn) Số nonce sử dụng khi ký giao dịch này. Mặc định sẽ sử dụng web3. đạo đức. getTransactionCount()
  • chainId - Chuỗi. (tùy chọn) là id blockchain của bạn. Default will use web3. đạo đức. bọc lưới. getId()
  • đến - Chuỗi. (tùy chọn) là địa chỉ người nhận của giao dịch
  • dữ liệu - Chuỗi. (tuỳ chọn) could be internal dung thực hiện giao dịch
  • giá trị - Chuỗi. (tùy chọn) là giá trị của giao dịch được tính theo đơn vị wei
  • gasPrice - Chuỗi. (tùy chọn) là phí gas để thực hiện giao dịch này. Default will use web3. đạo đức. gasPrice()
  • gas - Chuỗi. gas được cung cấp bởi giao dịch

privateKey - Chuỗi. mã bảo mật được sinh ra khi tạo tài khoản ví.
gọi lại - Chức năng. (tùy chọn) được trả lại là tham số đầu vào và đầu ra là giá trị trả lại.


Ví dụ

<script nonce="8IBTHwOdqNKAWeKl7plt8g==">
  // …
script>
0

Bước tiếp theo, chúng ta sẽ phải thực hiện lệnh gửi yêu cầu thực hiện giao dịch đó với hàm sendSignedTransaction