Trình tạo hàm băm SRI
Tạo hàm băm Tính toàn vẹn của nguồn phụ cho bất kỳ tệp JS hoặc CSS nào và nhận tập lệnh hoặc thẻ liên kết sẵn sàng để dán.
kết quả
Tính toàn vẹn của nguồn phụ (SRI) cho phép trình duyệt xác minh rằng tập lệnh hoặc biểu định kiểu được tìm nạp từ CDN hoặc máy chủ của bên thứ ba không bị thay đổi trước khi chạy — trình duyệt băm các byte đã tải xuống và từ chối thực thi tệp nếu thông báo không khớp với thuộc tính toàn vẹn mà bạn đã xuất bản. Công cụ này tính toán thông báo đó cho bất kỳ tệp JS hoặc CSS nào bạn thả vào, hoàn toàn bên trong tab trình duyệt của bạn, do đó, bản thân tệp đó không bao giờ cần phải được băm ra khỏi máy của bạn.
Công cụ băm chung sẽ không tạo ra giá trị SRI có thể sử dụng được: thông số kỹ thuật yêu cầu bản tóm tắt được mã hóa base64, không phải chuỗi thập lục phân mà hầu hết các công cụ tổng kiểm tra đều in và nó chỉ nhận dạng ba thuật toán — sha256, sha384 và sha512. Trình tạo này giới hạn lựa chọn thuật toán cho chính xác ba điều đó và mã hóa kết quả theo cách chính xác, sau đó tiến thêm một bước bằng cách soạn thẻ HTML đầy đủ xung quanh nó, với trường src hoặc href giữ chỗ mà bạn có thể chỉnh sửa tại chỗ trước khi sao chép.
Bên trong, tệp được đọc bằng API tệp, được băm bằng cách triển khai crypto.subtle.digest() gốc và các byte kết quả được chuyển đổi thành base64 theo từng phần nhỏ thay vì bằng một thao tác trải rộng lớn duy nhất — một chi tiết quan trọng khi tệp JS đi kèm tăng trưởng vượt quá khoảng một trăm nghìn byte, trong đó các phương pháp chuyển đổi đơn giản có thể đạt đến giới hạn ngăn xếp lệnh gọi của trình duyệt.
sha384 được chọn theo mặc định vì đây là thuật toán được đề xuất phổ biến nhất trong các ví dụ và tài liệu SRI, cân bằng độ dài tóm tắt với khả năng chống va chạm, nhưng sha256 và sha512 chỉ cần một cú nhấp chuột nếu quy trình xây dựng hoặc nhà cung cấp CDN chỉ định một yêu cầu khác.