Search
Close this search box.
เพิ่มความปลอดภัยให้ไฟล์ Libraries จาก CDN ด้วย SRI

เพิ่มความปลอดภัยให้ไฟล์ Libraries จาก CDN ด้วย SRI

Last updated 4 months ago,
1 mins read

ถึงแม้ CDN อย่าง Google Hosted Libraries, JsDelivr หรือ cdnjs จะช่วยให้เว็บไซต์ของเรามี Performance ที่ดีขึ้น แต่ถึงกระนั้น ก็ไม่ได้หมายความว่าบริการเหล่านี้จะปลอดภัยเสมอไป ดังนั้น เราจึงจำเป็นต้องมี “โค้ด” บางอย่างเพื่อมาช่วยยืนยันว่าไฟล์ต่างๆ ที่เรานำมาใช้นั้น ไม่ได้ถูก Hack หรือมีการแก้ไปจากไฟล์ต้นฉบับ โดยโค้ดที่พูดถึงเราเรียกว่า SRI หรือ Subresource Integrity

สำหรับเพื่อนๆ ที่เคยใช้ Bootsrap คงจะเคยผ่านตาโค้ดลักษณะนี้กันมาบ้าง สิ่งที่อยู่ใน integrity นี่แหละครับที่เรียกว่า SRI หรือ Subresource Integrity

<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>Code language: HTML, XML (xml)

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

Subresource Integrity (SRI) คือ เป็นฟีเจอร์ความปลอดภัยที่จะเป็นตัวช่วยให้ Browser สามารถตรวจสอบไฟล์ Scripts หรือ Stylesheets นั้นๆ ได้ว่าไม่ถูกแก้ไขไปจากไฟล์ต้นฉบับ ดังนั้น เพื่อเป็นการยืนยันข้อมูลกับ Browser เราจึงต้องมี flag บางอย่างไว้ให้ Browser ไว้คอยตรวจสอบโดย flag ที่ว่านี้ ก็คือ แอตทริบิวต์ที่ชื่อ integrity นั่นเอง เป็นที่ทราบกันดีว่าข้อมูล 1 ชุดเมื่อเข้า hash function แล้วเราจะได้ค่าคงที่เสมอ ดังนั้น เราจึงอาศัยความจริงข้อนี้ในการนำไฟล์ของเราเข้าสู่ hash function แล้วนำค่าที่ได้ไปใส่ใน integrity แต่ก่อนจะนำไปใส่ต้องแปลงค่าเป็นแบบ base64-encoded เสียก่อน

Cross Origin Resource Sharing (CORS) คืออะไร

Cross Origin Resource Sharing (CORS) คือ เทคโนโลยีที่ถูกกำหนดขึ้นโดย W3C ซึ่งมันจะทำให้ เว็บไซต์สามารถเข้าถึงข้อมูลข้าม Domain กันได้ โดย CORS จะเป็นผู้กำหนดวิธีการสื่อสารระหว่าง Web Browser และ Web Server เพื่อที่จะสามารถอนุญาติให้เข้าถึงข้อมูลข้าม Domain ได้อย่างปลอดภัย

Subresource Integrity (SRI) ทำงานอย่างไร

หลังจากที่เราเข้าเว็บไซต์ Browser จะเริ่มทำการอ่านไฟล์ที่อยู่ในแท็ก <script> หรือ <link> ซึ่งถ้าหากแท็กดังกล่าวมีการะบุแอตทริบิวต์ integrity เอาไว้ มันจะทำการตรวจสอบไฟล์ดังกล่าวโดยการดูรหัส hash หากพบว่ามีข้อมูลไม่ตรงกัน Browser จะปฎิเสธการโหลดไฟล์นั้นทันที

สร้าง SRI Hash ได้อย่างไร

เราสามารถสร้าง SRI Hash ได้ง่ายๆ เพียงเข้าไปที่เว็บไซต์ https://www.srihash.org และนำ Url ของ Libraries ที่ต้องการไปใส่ จากนั้นก็นำโค้ดไปใช้งานได้เลย แต่เอาจริงๆ CDN ที่ให้บริการ Hosted Libraries ส่วนใหญ่ก็จะมาพร้อมกับ SRI อยู่แล้ว

สรุป

Subresource Integrity (SRI) เป็นเทคโนโลยีด้านความปลอดภัยที่เหมาะสำหรับผู้ที่เป็นเจ้าของเว็บไซต์, นักพัฒนา, ผู้ให้บริการ CDN หรือ Third Party Hosts โดย SRI จะเป็นตัวช่วยในการยืนยัน Source ไฟล์ที่ถูกดึงมาใช้จาก Third Party ทั้งหลายว่าเป็นไฟล์ต้นฉบับ ไม่ได้ถูกแก้ไขโดยผู้ไม่หวังดี ดังนั้น การใช้ไฟล์จาก CDN ต่างๆ เหล่านี้ควรมี SRI ติดมาด้วยเสมอ อันที่จริงแล้ว CDN ที่ให้บริการ Hosted Libraries หลายๆ เจ้าอย่าง JsDelivr และ cdnjs ก็มีการ Generate SRI ให้เลือกอยู่เพื่อนๆ ก็สามารถนำไปใช้ได้เลย

อ้างอิง:

Tagged with:
ผู้เขียน
Danai Phianphutthikorn
Founder, Writer, Designer, Videography, YouTuber

บทความที่เกี่ยวข้อง

แนะนำเครื่องมือลดขนาดรูปภาพออนไลน์ ใช้งานได้ฟรี ที่นักออกแบบเว็บไซต์ และนักเขียนควรรู้ เราไปดูกันครับว่ามีเครื่องมืออะไรน่าสนใจกันบ้าง
สำหรับเพื่อนๆ ที่กำลังมองหา Code Editor อยู่แล้วละก็ ต้องไม่พลาดบทความนี้ครับ เพราะผมได้รวบรวม Code Editor ยอดนิยมมาฝากเพื่อนๆ กัน แถมใช้ได้ฟรีอีกต่างหาก
รวม CDN ผู้ให้บริการ Hosted Libraries ชื่อดัง สำหรับนักพัฒนาเว็บไซต์ และแอพพลิเคชั่นโดยเฉพาะ เพื่อช่วยปรับปรุง Performance เว็บไซต์ให้ดียิ่งขึ้น
เขียน CSS ให้อ่านโค้ดได้ง่าย ลดความซ้ำซ้อนของโค้ดด้วย BEM CSS มาตรฐานการเขียน CSS ที่ช่วยให้โค้ดเป็นระเบียบ เข้าใจง่าย เหมาะสำหรับนักพัฒนาเว็บไซต์