Thuộc tính toàn cầu
// …
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ôngThuộc tính
// …
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
// …
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épGhi chú. Chỉ sử dụng
// …
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
// …
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
// …
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 đề
// …
1 [điền trước
// …
2]Content-Security-Policy: script-src 'nonce-8IBTHwOdqNKAWeKl7plt8g=='
Vì lý do bảo mật, thuộc tính nội dung
// …
1 bị ẩn [một chuỗi trống sẽ được trả về]script.getAttribute["nonce"]; // returns empty string
Thuộc tính
// …
1 là cách duy nhất để truy cập noncesscript.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.
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ụ
// …
0Bướ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