Các noncethuộc tính cho phép bạn “danh sách trắng” nhất định inline scriptvà stylecác yếu tố, trong khi tránh sử dụng các CSP unsafe-inlinechỉ thị (mà sẽ cho phép tất cả các inline script/ style), do đó bạn vẫn giữ lại các tính năng chủ chốt của CSP không cho phép inline script/ stylenói chung.
Vì vậy, noncethuộc tính là cách thông báo cho các trình duyệt rằng nội dung nội tuyến của một phần tử tập lệnh hoặc kiểu cụ thể không được một bên thứ ba (độc hại) đưa vào tài liệu, mà thay vào đó, bất cứ ai cố tình đưa tài liệu vào máy chủ từ.
https://developers.google.com/web/fundamentals/security/csp/#if_you_absolTHER_must_use_it đưa ra một ví dụ hay về cách sử dụng noncethuộc tính, theo các bước sau:
Đối với mọi yêu cầu, máy chủ Web của bạn nhận được một tài liệu cụ thể, hãy để phần phụ trợ của bạn tạo một chuỗi mã hóa cơ sở ngẫu nhiên 64 mã hóa í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ã; ví dụ EDNnf03nceIOfn39fn3e9h3sdfa. Đó là nonce của bạn.
Thực hiện nonce được tạo ở bước 1 và đối với bất kỳ nội tuyến nào script/ stylebạn muốn vào danh sách trắng, hãy tạo mã phụ trợ của bạn chèn một noncethuộc tính vào tài liệu trước khi nó được gửi qua dây, với giá trị đó là giá trị:
<script nonce="EDNnf03nceIOfn39fn3e9h3sdfa">…</script>
Thực hiện nonce được tạo trong bước 1, thêm vào nonce-nó và làm cho phần phụ trợ của bạn tạo tiêu đề CSP với giá trị trong danh sách nguồn cho script-srchoặc style-src:
Content-Security-Policy: script-src 'nonce-EDNnf03nceIOfn39fn3e9h3sdfa'
Vì vậy, cơ chế sử dụng nonce là một giải pháp thay thế cho việc phụ trợ của bạn tạo ra một hàm băm của nội dung scripthoặc stylebạn muốn cho phép, sau đó chỉ định hàm băm đó trong danh sách nguồn thích hợp trong tiêu đề CSP của bạn.
Lưu ý rằng vì các trình duyệt không (không thể) kiểm tra xem giá trị nonce đã gửi thay đổi giữa các yêu cầu của trang hay không, nên có thể điều tra mặc dù bạn hoàn toàn không thể bỏ qua việc bỏ qua 1 ở trên và không để phụ trợ của bạn làm bất cứ điều gì linh hoạt cho nonce, trong trường hợp đó bạn chỉ có thể đặt một noncethuộc tính có giá trị tĩnh vào nguồn HTML của tài liệu của bạn và gửi tiêu đề CSP tĩnh có cùng giá trị nonce đó.
Nhưng lý do bạn không muốn sử dụng một nonce tĩnh theo cách đó là, nó sẽ đánh bại khá nhiều toàn bộ mục đích của việc sử dụng nonce để bắt đầu với, bởi vì, nếu bạn sử dụng một nonce tĩnh như vậy, thì nếu bạn sử dụng một nonce tĩnh như thế, tại thời điểm đó bạn cũng có thể sử dụng unsafe-inline.