SRI Hash Generator
Tải tệp JS/CSS từ CDN, tính mã băm SHA-256/384/512 và xuất thẻ <script> / <link> có thuộc tính integrity.
Thuộc tính integrity và cách nó chặn mã lạ
Công cụ này làm gì
Trình duyệt của bạn tải trực tiếp tệp JavaScript hoặc CSS từ địa chỉ mạng phân phối nội dung mà bạn dán, băm toàn bộ nội dung tệp bằng Web Crypto theo ba thuật toán SHA-256, SHA-384 và SHA-512, mã hoá kết quả sang base64, rồi ghép sẵn thẻ script hoặc thẻ link đầy đủ thuộc tính integrity và crossorigin để bạn dán thẳng vào mã nguồn.
Lúc nào nên ghim nội dung tệp
Khi nhúng thư viện từ unpkg, jsDelivr hay cdnjs vào một trang công khai. Khi trang có biểu mẫu thanh toán hoặc biểu mẫu đăng nhập, nơi một tệp bị thay đổi âm thầm đồng nghĩa với mất dữ liệu người dùng. Khi đơn vị kiểm định bảo mật yêu cầu chứng minh các tài nguyên bên thứ ba đều được ghim nội dung.
Chọn thuật toán nào
SHA-384 là mức thường dùng, cân bằng giữa độ dài chuỗi phải dán vào HTML và mức an toàn. Cơ chế rất đơn giản: trình duyệt tải tệp về, tự băm lại, so với chuỗi bạn khai; lệch một byte là tệp bị chặn không thực thi, trang thà mất tính năng còn hơn chạy mã lạ.
Chỗ hay làm hỏng thuộc tính integrity
Chuỗi băm gắn chặt vào đúng một phiên bản tệp, nên dùng địa chỉ kiểu latest sẽ hỏng ngay lần đầu nhà cung cấp cập nhật; luôn ghim số phiên bản cụ thể. Thiếu crossorigin bằng anonymous thì trình duyệt không có quyền đọc nội dung để kiểm tra và sẽ chặn. Có những tệp trả nội dung khác nhau tuỳ trình duyệt gọi tới, điển hình là tệp CSS của dịch vụ phông chữ, loại đó không dùng được cơ chế này. Nếu nhà cung cấp không mở CORS thì chính trình duyệt bạn cũng không tải được và công cụ sẽ báo lỗi.
Tệp được tải và băm ngay tại máy bạn. Tệp được chính trình duyệt bạn tải về từ mạng phân phối nội dung và băm ngay tại máy bằng Web Crypto; máy chủ ALODEV không tham gia và không nhìn thấy địa chỉ bạn nhập.
Câu hỏi thường gặp
SRI hash dùng để làm gì?
Ép trình duyệt kiểm tra nội dung tệp JS/CSS tải từ CDN đúng với hash đã ghim trước khi thực thi, chặn rủi ro tấn công chuỗi cung ứng khi CDN bị hack hoặc thay file.
Nên chọn thuật toán SHA-256, SHA-384 hay SHA-512?
SHA-384 là mức khuyến nghị của W3C, cân bằng giữa độ dài chuỗi phải dán vào HTML và mức an toàn; SHA-512 dùng cho tài nguyên quan trọng hơn.
Vì sao fetch tệp báo lỗi CORS?
SRI chỉ hoạt động với URL cho phép CORS như cdn.jsdelivr.net, unpkg.com hay cdnjs.cloudflare.com; CDN không mở CORS thì trình duyệt không đọc được nội dung để tính hash.
SRI có tự cập nhật khi CDN đổi phiên bản không?
Không. Hash gắn chặt vào đúng một phiên bản tệp, nên luôn ghim số phiên bản cụ thể thay vì dùng đường dẫn kiểu latest.
