0

เครื่องกำเนิดแฮช SRI

สร้างแฮชความสมบูรณ์ของทรัพยากรย่อยสำหรับไฟล์ JS หรือ CSS และรับสคริปต์หรือแท็กลิงก์ที่พร้อมวาง

🔗

ลากและวางรูปภาพ

ใช้งานได้กับไฟล์ JS หรือ CSS — ไม่มีการอัพโหลดอะไรเลย แฮชจะถูกคำนวณในเครื่อง

ความสมบูรณ์ของทรัพยากรย่อยอนุญาตเฉพาะการแยกย่อย sha256, sha384 หรือ sha512 ที่เข้ารหัส base64 เท่านั้น เครื่องมือนี้จะจำกัดตัวเลือกตามนั้น ดังนั้นเอาต์พุตจึงมีความถูกต้องตามข้อกำหนดเสมอ

Buy Me a Coffee at ko-fi.com
กำลังประมวลผล... 0%
กำลังอ่านไฟล์
คอมพิวติ้งไดเจสต์
เข้ารหัสเป็น base64
เสร็จแล้ว

ผลลัพธ์

ความสมบูรณ์ของทรัพยากรย่อย (SRI) ช่วยให้เบราว์เซอร์ตรวจสอบได้ว่าสคริปต์หรือสไตล์ชีตที่ดึงมาจาก CDN หรือโฮสต์บุคคลที่สามนั้นไม่ได้ถูกแก้ไขก่อนที่จะรัน — เบราว์เซอร์แฮชไบต์ที่ดาวน์โหลดและปฏิเสธที่จะเรียกใช้ไฟล์หากไดเจสต์ไม่ตรงกับแอตทริบิวต์ความสมบูรณ์ที่คุณเผยแพร่ เครื่องมือนี้จะคำนวณการแยกย่อยไฟล์ JS หรือ CSS ใดๆ ที่คุณวางไว้ โดยทั้งหมดอยู่ภายในแท็บเบราว์เซอร์ของคุณ ดังนั้นตัวไฟล์จึงไม่จำเป็นต้องออกจากเครื่องเพื่อแฮช

เครื่องมือแฮชทั่วไปจะไม่สร้างค่า SRI ที่ใช้งานได้: ข้อมูลจำเพาะต้องใช้ไดเจสต์ที่เข้ารหัส base64 ไม่ใช่สตริงเลขฐานสิบหกที่เครื่องมือเช็คซัมส่วนใหญ่พิมพ์ออกมา และจะจดจำอัลกอริธึมเพียงสามอัลกอริธึมเท่านั้น ได้แก่ sha256, sha384 และ sha512 ตัวสร้างนี้จำกัดตัวเลือกอัลกอริธึมให้ตรงกับสามตัวเลือกนั้นและเข้ารหัสผลลัพธ์ด้วยวิธีที่ถูกต้อง จากนั้นก้าวไปอีกขั้นด้วยการเขียนแท็ก HTML แบบเต็มรอบๆ อัลกอริธึม โดยมีฟิลด์ src หรือ href ตัวยึดตำแหน่งที่คุณสามารถแก้ไขได้ก่อนที่จะคัดลอก

ภายใต้ฝากระโปรง ไฟล์จะถูกอ่านด้วย File API ซึ่งแฮชด้วยการใช้ crypto.subtle.digest() ดั้งเดิม และไบต์ผลลัพธ์จะถูกแปลงเป็น base64 เป็นส่วนเล็กๆ แทนที่จะใช้การดำเนินการกระจายขนาดใหญ่เพียงครั้งเดียว ซึ่งเป็นรายละเอียดที่สำคัญเมื่อไฟล์ JS ที่รวมกลุ่มไว้ขยายเกินประมาณหนึ่งแสนไบต์ โดยที่วิธีการแปลงที่ไร้เดียงสาอาจถึงขีดจำกัด call-stack ของเบราว์เซอร์

sha384 ถูกเลือกตามค่าเริ่มต้นเนื่องจากเป็นอัลกอริทึมที่แนะนำบ่อยที่สุดในตัวอย่างและเอกสารประกอบของ SRI โดยจะรักษาสมดุลความยาวการแยกย่อยกับการต้านทานการชนกัน แต่ sha256 และ sha512 ทำได้เพียงคลิกเดียวหากไปป์ไลน์บิวด์หรือผู้ให้บริการ CDN ระบุข้อกำหนดที่แตกต่างกัน