Web Security

Subresource Integrity (SRI) คืออะไร

A
admin
22 มกราคม 2569 0 ครั้ง
แชร์:

Subresource Integrity คืออะไร

Subresource Integrity (SRI) ให้ผู้เขียนหน้าเว็บระบุแฮชของไฟล์สคริปต์หรือสไตล์ เบราว์เซอร์จะรันไฟล์เมื่อแฮชตรงเท่านั้น มาตรฐานอยู่ที่ W3C Subresource Integrity และคำอธิบายใช้งานที่ MDN SRI

ประโยชน์หลักคือลดความเสี่ยงเมื่อ CDN หรือโฮสต์บุคคลที่สามถูกแก้ไขไฟล์

ตัวอย่าง

html
<script src="https://cdn.example.com/library.js"
        integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"
        crossorigin="anonymous"></script>

อัลกอริทึมที่รองรับทั่วไปคือ SHA-256, SHA-384 และ SHA-512 ต้องมี crossorigin ที่เข้ากันได้เมื่อโหลดข้าม origin เพราะเบราว์เซอร์ต้องอ่านเนื้อหาเพื่อตรวจแฮช

สร้างค่า integrity ได้จาก OpenSSL

bash
openssl dgst -sha384 -binary library.js | openssl base64 -A

หรือใช้เครื่องมือที่ MDN อ้างถึงในเอกสาร SRI

ข้อจำกัด

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

สรุป

ใช้ SRI กับสคริปต์/สไตล์จาก CDN ที่ล็อกเวอร์ชัน และเก็บแฮชไว้ในรีวิวโค้ดเช่นเดียวกับ dependency อื่น

แหล่งอ้างอิง

หมวดหมู่: Web Security