tính toàn vẹn - xác định giá trị băm của tài nguyên (như tổng kiểm tra) phải được khớp để làm cho trình duyệt thực thi nó. Hàm băm đảm bảo rằng tệp không được sửa đổi và chứa dữ liệu dự kiến. Bằng cách này, trình duyệt sẽ không tải các tài nguyên khác nhau (ví dụ như độc hại). Hãy tưởng tượng một tình huống trong đó các tệp JavaScript của bạn đã bị hack trên CDN và không có cách nào để biết điều đó. Thuộc tính toàn vẹn ngăn tải nội dung không phù hợp.
SRI không hợp lệ sẽ bị chặn (công cụ dành cho nhà phát triển Chrome), bất kể nguồn gốc chéo. Bên dưới trường hợp NON-CORS khi thuộc tính toàn vẹn không khớp:
Tính toàn vẹn có thể được tính bằng cách sử dụng: https://www.srihash.org/
Hoặc nhập vào bảng điều khiển ( liên kết ):
openssl dgst -sha384 -binary FILENAME.js | openssl base64 -A
crossorigin - xác định các tùy chọn được sử dụng khi tài nguyên được tải từ máy chủ trên một nguồn gốc khác. (Xem CORS (Chia sẻ tài nguyên nguồn gốc chéo) tại đây: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS ). Nó thay đổi hiệu quả các yêu cầu HTTP được gửi bởi trình duyệt. Nếu thuộc tính crossorigin Cảnh sát được thêm vào - nó sẽ dẫn đến việc thêm nguồn gốc: cặp khóa-giá trị <ORIGIN> vào yêu cầu HTTP như hiển thị bên dưới.
crossorigin có thể được đặt thành hoặc nặc danh Cả hai sẽ dẫn đến việc thêm nguồn gốc: vào yêu cầu. Tuy nhiên, sau này sẽ đảm bảo rằng thông tin đăng nhập được kiểm tra. Không có thuộc tính crossorigin trong thẻ sẽ dẫn đến việc gửi yêu cầu mà không có nguồn gốc: cặp khóa-giá trị.
Đây là một trường hợp khi yêu cầu thông tin xác thực sử dụng của người dùng từ CDN:
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"
integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn"
crossorigin="use-credentials"></script>
Một trình duyệt có thể hủy yêu cầu nếu đặt chéo không chính xác.
Liên kết
- https://www.w3.org/TR/cors/
- https://tools.ietf.org/html/rfc6454
- https://developer.mozilla.org/en-US/docs/Web/HTML / Yếu tố / liên kết
Blog
- https://frederik-braun.com/USE-subresource-integrity.html
- https://web-security.guru/en/web-security/subresource-integrity
Attribute integrity not allowed on element link at this point.