Subresource Integrity (SRI) là gì?
Subresource Integrity (SRI) là một tính năng bảo mật cho phép trình duyệt xác minh rằng các tệp được tải từ các nguồn bên ngoài — chẳng hạn như CDN — không bị thay đổi hoặc xâm phạm. Khi bạn thêm thuộc tính integrity vào thẻ <script> hoặc <link>, trình duyệt sẽ so sánh hash của tệp đã tải với hash dự kiến. Nếu chúng không khớp, trình duyệt sẽ chặn tài nguyên.
Tại sao sử dụng SRI?
Tải JavaScript hoặc CSS từ CDN của bên thứ ba rất tiện lợi, nhưng nó tạo ra rủi ro bảo mật. Nếu CDN bị xâm phạm, kẻ tấn công có thể tiêm mã độc vào trang web của bạn. SRI loại bỏ rủi ro này bằng cách đảm bảo rằng chỉ phiên bản chính xác, được xác minh của tệp mới được thực thi.
Ngăn Chặn Các Cuộc Tấn Công Chuỗi Cung Ứng
Bảo Vệ Dữ Liệu Người Dùng
Tuân Thủ Các Tiêu Chuẩn Bảo Mật
Nó Hoạt Động Như Thế Nào?
SRI sử dụng các hàm hash mật mã (SHA-256, SHA-384 hoặc SHA-512) để tạo dấu vân tay của nội dung tệp. Hash này được thêm vào thẻ HTML dưới dạng thuộc tính integrity, cùng với crossorigin="anonymous" để kích hoạt xác minh dựa trên CORS.
Cách Sử Dụng Trình Tạo Hash SRI
Dán Nội Dung Tệp
Sao chép toàn bộ nội dung của tệp JavaScript hoặc CSS mà bạn muốn bảo vệ và dán nó vào textarea Nội dung. Hash được tạo tự động khi bạn nhập hoặc dán.
Chọn Một Thuật Toán
Chọn thuật toán hash từ thanh công cụ. SHA-384 được chọn theo mặc định và là lựa chọn được khuyến nghị cho SRI. Bạn cũng có thể sử dụng SHA-256 hoặc SHA-512 tùy thuộc vào yêu cầu của bạn.
Đặt Loại Thẻ
Chọn xem tài nguyên là <script> (JavaScript) hay <link> (CSS stylesheet). Nếu bạn nhập URL có phần mở rộng .js hoặc .css, loại thẻ sẽ được phát hiện tự động.
Thêm URL Tài Nguyên (Tùy Chọn)
Nhập URL CDN của tài nguyên trong trường URL Tài Nguyên. URL này sẽ được sử dụng trong thuộc tính src hoặc href của thẻ HTML được tạo. Nếu để trống, một URL giữ chỗ sẽ được sử dụng.
Sao Chép Đầu Ra
Sao chép hash integrity riêng lẻ hoặc thẻ HTML hoàn chỉnh bằng cách sử dụng các nút sao chép. Dán thẻ trực tiếp vào HTML của bạn để kích hoạt bảo vệ SRI.
Các Tính Năng Chính
Nhiều Thuật Toán Hash
Tạo hash SRI bằng cách sử dụng SHA-256, SHA-384 hoặc SHA-512. SHA-384 là thuật toán mặc định và được khuyến nghị theo thông số kỹ thuật SRI của W3C.
- SHA-256 cho bảo mật cơ bản
- SHA-384 (được khuyến nghị)
- SHA-512 cho sức mạnh tối đa
- Chuyển đổi thuật toán tức thì
Tự Động Phát Hiện Loại Thẻ
Khi bạn nhập URL tài nguyên, công cụ sẽ tự động phát hiện xem đó là tệp JavaScript hay CSS stylesheet và chọn loại thẻ thích hợp.
- Tự động phát hiện tệp .js
- Tự động phát hiện tệp .css
- Ghi đè thủ công có sẵn
- Phân tích URL thông minh
Đầu Ra HTML Sẵn Sàng Sử Dụng
Nhận một thẻ HTML hoàn chỉnh với các thuộc tính integrity và crossorigin đã được bao gồm. Chỉ cần sao chép và dán nó vào tài liệu HTML của bạn.
- Các thẻ <script> hoàn chỉnh
- Các thẻ <link> hoàn chỉnh
- Các thuộc tính CORS được bao gồm
- Không cần chỉnh sửa thủ công
Sao Chép Chỉ Bằng Một Cú Nhấp Chuột
Sao chép giá trị hash integrity hoặc thẻ HTML hoàn chỉnh chỉ bằng một cú nhấp chuột. Một xác nhận trực quan xuất hiện khi nội dung được sao chép vào bộ nhớ tạm của bạn.
- Sao chép chỉ hash
- Sao chép thẻ HTML hoàn chỉnh
- Xác nhận trực quan
- Truy cập bộ nhớ tạm tức thì
Xử Lý Phía Máy Khách
Tất cả tính toán hash được thực hiện hoàn toàn trong trình duyệt của bạn bằng Web Crypto API. Nội dung tệp của bạn không bao giờ được tải lên bất kỳ máy chủ nào.
- 100% dựa trên trình duyệt
- Không tải lên máy chủ
- Quyền riêng tư hoàn toàn
- Hoạt động ngoại tuyến
Tạo Thời Gian Thực
Các giá trị hash được tính toán tức thì khi bạn nhập hoặc dán nội dung. Không cần nhấp vào các nút tạo hoặc chờ xử lý.
- Tính toán hash tức thì
- Cập nhật xem trước trực tiếp
- Không có độ trễ hoặc chờ đợi
- Xử lý hiệu quả
Các Câu Hỏi Thường Gặp
Tôi nên sử dụng thuật toán nào cho SRI?
SHA-384 được W3C khuyến nghị và là thuật toán được sử dụng rộng rãi nhất cho SRI. Nó cung cấp sự cân bằng mạnh mẽ giữa bảo mật và hiệu suất. SHA-256 và SHA-512 cũng được hỗ trợ bởi tất cả các trình duyệt hiện đại.
Tôi có cần thuộc tính crossorigin không?
Có. Thuộc tính crossorigin="anonymous" là bắt buộc để SRI hoạt động với các tài nguyên được tải từ một nguồn gốc khác (chẳng hạn như CDN). Nếu không có nó, trình duyệt không thể xác minh tính toàn vẹn của các tài nguyên từ các nguồn gốc khác.
Giá trị anonymous có nghĩa là không có thông tin xác thực (cookie, xác thực HTTP) nào được gửi cùng với yêu cầu, đây là cấu hình tiêu chuẩn cho các tài nguyên CDN công khai.
Điều gì xảy ra nếu hash không khớp?
Nếu hash của tệp đã tải không khớp với thuộc tính integrity, trình duyệt sẽ từ chối thực thi script hoặc từ chối áp dụng stylesheet. Điều này bảo vệ trang web của bạn khỏi tải các tệp bị xâm phạm.
CDN có cần hỗ trợ CORS không?
Có. Máy chủ lưu trữ tài nguyên phải bao gồm tiêu đề Access-Control-Allow-Origin để xác minh SRI hoạt động. Hầu hết các CDN phổ biến (jsDelivr, cdnjs, unpkg) đã hỗ trợ CORS.
Nếu bạn đang sử dụng CDN không hỗ trợ CORS, xác minh SRI sẽ thất bại và tài nguyên sẽ không tải. Trong trường hợp này, bạn sẽ cần chuyển sang CDN hỗ trợ CORS hoặc lưu trữ tài nguyên trên miền của riêng bạn.
Nội dung của tôi có được gửi đến máy chủ không?
Không. Tất cả hashing được thực hiện cục bộ trong trình duyệt của bạn bằng Web Crypto API. Nội dung tệp của bạn không bao giờ rời khỏi thiết bị của bạn.
Tôi có thể sử dụng nhiều thuật toán trong một thẻ không?
Có, thông số kỹ thuật SRI cho phép nhiều hash được phân tách bằng dấu cách (ví dụ: sha256-abc sha384-xyz). Trình duyệt sẽ sử dụng thuật toán mạnh nhất mà nó hỗ trợ. Công cụ này tạo một hash tại một thời điểm — bạn có thể kết hợp chúng theo cách thủ công nếu cần.
Sử dụng nhiều hash cung cấp khả năng tương thích ngược với các trình duyệt cũ hơn trong khi đảm bảo các trình duyệt mới hơn sử dụng thuật toán mạnh nhất có sẵn.
Chưa có bình luận nào. Hãy là người đầu tiên!