แท็กที่เกี่ยวข้องกับข้อมูลเมตา
บทความนี้อธิบายเกี่ยวกับแท็กที่เกี่ยวข้องกับข้อมูลเมตา
มันอธิบายแท็ก <meta>
รวมถึงประเด็นที่เกี่ยวข้องกับ SEO การออกแบบที่ตอบสนอง และ Content-Security-Policy
YouTube Video
แท็กที่เกี่ยวข้องกับข้อมูลเมตา
แท็ก <meta>
1<meta charset="UTF-8">
2<meta name="viewport" content="width=device-width, initial-scale=1.0">
- แท็ก
<meta>
ให้ข้อมูลเมตาสำหรับเอกสาร HTML ข้อมูลเมตาไม่ได้แสดงบนหน้า แต่ถูกใช้โดยเครื่องมือค้นหาและเบราว์เซอร์ แท็ก<meta>
ใช้สำหรับคำอธิบายหน้า คำหลัก ข้อมูลผู้เขียน และการตั้งค่าการออกแบบที่ตอบสนอง
แท็ก <meta name="viewport">
1<meta name="viewport" content="width=device-width, initial-scale=1">
- แท็ก
<meta name="viewport">
ควบคุมการจัดวางและการปรับขนาดของหน้าเว็บบนอุปกรณ์ต่างๆ มักใช้ในการออกแบบที่ตอบสนองเพื่อให้แน่ใจว่าแสดงผลได้อย่างถูกต้องบนอุปกรณ์มือถือ
แท็ก <meta name="description">
1<meta name="description" content="An example webpage">
- แท็ก
<meta name="description">
ใช้เพื่ออธิบายเนื้อหาของหน้าเว็บอย่างย่อ เครื่องมือค้นหาใช้คำอธิบายนี้เพื่อแสดงสรุปของหน้าในผลการค้นหา
แท็ก <meta name="keywords">
1<meta name="keywords" content="HTML, CSS, JavaScript">
- แท็ก
<meta name="keywords">
ให้รายการคำหลักที่เกี่ยวข้องกับเนื้อหาของหน้า เครื่องมือค้นหาใช้คำหลักเหล่านี้เพื่อทำความเข้าใจเนื้อหาของหน้าให้ดียิ่งขึ้น
แท็ก <meta name="author">
1<meta name="author" content="John Doe">
- แท็ก
<meta name="author">
ระบุผู้เขียนของหน้าเว็บ ข้อมูลนี้ถูกใช้ส่วนใหญ่โดยเครื่องมือค้นหาและเครื่องมืออื่นๆ เพื่อระบุผู้เขียนของหน้าอย่างถูกต้อง
แท็ก <meta http-equiv="refresh">
1<meta http-equiv="refresh" content="5; url=https://example.com">
- แท็ก
<meta http-equiv="refresh">
ใช้ในการรีเฟรชหน้าอัตโนมัติหรือเปลี่ยนเส้นทางไปยัง URL อื่นหลังจากเวลาที่กำหนด มันมีประโยชน์สำหรับการรีโหลดหน้าใหม่หรือเปลี่ยนเส้นทางผู้ใช้
แท็ก <meta http-equiv="cache-control">
1<meta http-equiv="cache-control" content="no-cache">
- แท็ก
<meta http-equiv="cache-control">
ใช้ในการควบคุมพฤติกรรมการแคชของหน้าเว็บ มันสามารถระบุว่าให้ทำการแคชหน้าเว็บหรือทำการตรวจสอบใหม่เมื่อมีการเข้าถึงครั้งต่อไป
แท็ก <meta http-equiv="expires">
1<meta http-equiv="expires" content="Tue, 01 Jan 2025 00:00:00 GMT">
- แท็ก
<meta http-equiv="expires">
กำหนดวันที่หมดอายุสำหรับเนื้อหาของหน้า เมื่อวันที่ที่กำหนดผ่านไป เนื้อหาจะกลายเป็นล้าสมัย และเบราว์เซอร์จะถูกกระตุ้นให้ดึงข้อมูลเวอร์ชันใหม่
แท็ก <meta http-equiv="X-UA-Compatible">
1<meta http-equiv="X-UA-Compatible" content="IE=edge">
- แท็ก
<meta http-equiv="X-UA-Compatible">
ใช้ในการระบุโหมดความเข้ากันได้สำหรับ Internet Explorer แท็กนี้ทำให้มั่นใจได้ว่าเบราว์เซอร์ใช้เวอร์ชันที่เหมาะสมของเอนจินการแสดงผลเพื่อแสดงหน้า
แท็ก <meta http-equiv="content-security-policy">
คุณสมบัติ http-equiv="content-security-policy"
ในแท็ก HTML meta
เป็นฟังก์ชันที่ใช้บังคับกฎความปลอดภัยเฉพาะในเบราว์เซอร์เพื่อเสริมความปลอดภัยของหน้าเว็บ โดยการใช้คุณสมบัตินี้ นักพัฒนาเว็บไซต์สามารถตั้งนโยบายเกี่ยวกับการโหลดทรัพยากรและการดำเนินการของสคริปต์เพื่อป้องกันการโจมตี เช่น XSS (Cross-Site Scripting) และการแทรกข้อมูล
อะไรคือ Content-Security-Policy
?
Content-Security-Policy
(CSP) เป็นประเภทของ HTTP header ที่ใช้ควบคุมว่าทรัพยากรภายนอก (เช่น ภาพ สคริปต์ สไตล์ชีต ฯลฯ) หน้าเว็บสามารถโหลดได้และโค้ดประเภทใดที่สามารถดำเนินการได้ โดยปกติจะส่งเป็น HTTP header แต่สามารถกำหนดภายใน HTML ได้ด้วยการใช้แท็ก meta
วิธีนี้ช่วยให้สามารถกำหนด CSP บนฝั่งไคลเอ็นต์ แทนที่จะต้องตั้งค่าหัวข้อบนฝั่งเซิร์ฟเวอร์
ตัวอย่างเช่น คุณสามารถตั้งค่า CSP ในแท็ก meta
ของ HTML ได้ดังนี้:
1<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://example.com; script-src 'self' https://apis.google.com">
ในตัวอย่างนี้ นโยบายต่อไปนี้จะถูกตั้งค่า:
default-src 'self'
: โดยพื้นฐานแล้ว ทรัพยากรทั้งหมดจะโหลดจากแหล่งเดียวกัน (ตัวเอง) เท่านั้นimg-src https://example.com
: รูปภาพจะถูกโหลดเฉพาะจากhttps://example.com
script-src 'self' https://apis.google.com
: สคริปต์จะถูกดำเนินการเฉพาะจากแหล่งเดียวกันหรือลิงก์จากhttps://apis.google.com
ความแตกต่างระหว่าง http-equiv
และ HTTP headers
โดยปกติแล้ว Content-Security-Policy
จะถูกส่งจากเซิร์ฟเวอร์ไปยังไคลเอ็นต์เป็น HTTP header อย่างไรก็ตาม หากคุณตั้งค่าในฝั่งไคลเอ็นต์ด้วยการใช้แท็ก meta
สามารถเขียนลงใน HTML ได้โดยตรง
อย่างไรก็ตาม มีความแตกต่างที่สำคัญบางประการระหว่างการตั้งค่าเป็น HTTP header และการกำหนดด้วยแท็ก meta
:
-
ลำดับความสำคัญ: CSP ที่ส่งผ่าน HTTP header จะได้รับการใช้งานก่อนหน้าที่ระบุในแท็ก
meta
ซึ่งหมายความว่าหากตั้งค่า CSP บนฝั่งเซิร์ฟเวอร์ จะไม่สามารถถูกแทนที่โดยแท็กmeta
ที่ใช้บนฝั่งไคลเอ็นต์ได้ -
เวลาการใช้งาน: CSP ที่ระบุผ่าน HTTP header จะถูกใช้งานก่อนที่หน้าเว็บจะโหลดเสร็จ ในทางตรงกันข้าม CSP ที่ระบุผ่านแท็ก
meta
จะถูกใช้งานเมื่อ HTML ถูกแปลผล ซึ่งอาจทำให้ทรัพยากรบางส่วนถูกโหลดไปแล้ว
คำสั่งที่มีใน CSP
ใน CSP มีคำสั่งต่างๆ ที่ใช้เพื่อกำหนดนโยบายที่อนุญาตหรือไม่อนุญาตให้โหลดและดำเนินการทรัพยากรบางประเภท directive ทั่วไปประกอบด้วยสิ่งต่อไปนี้:
- default-src: กำหนดนโยบายแหล่งที่มาสำหรับทรัพยากรทั้งหมดโดยค่าเริ่มต้น มันจะถูกใช้งานกับทรัพยากรที่ไม่ได้กำหนดไว้โดยคำสั่งอื่น ๆ
- script-src: ระบุแหล่งที่มาสำหรับ JavaScript เพื่อป้องกันการโจมตีแบบ XSS คุณสามารถจำกัดการโหลดสคริปต์จากไซต์ภายนอก
- style-src: ระบุแหล่งที่มาสำหรับ CSS โดยการจำกัดการโหลดสไตล์ชีตจากแหล่งภายนอก คุณสามารถป้องกันการโจมตีสไตล์ของเว็บไซต์ได้
- img-src: ระบุแหล่งที่มาสำหรับภาพ คุณสามารถจำกัดการโหลดรูปภาพจากแหล่งภายนอกได้
- connect-src: ระบุ URL ที่อนุญาตสำหรับ XMLHttpRequests และการเชื่อมต่อ WebSocket สิ่งนี้ช่วยให้การสื่อสารผ่าน API ภายนอกและ WebSocket มีความปลอดภัย
โดยการรวมคำสั่งเหล่านี้ คุณสามารถสร้างนโยบายที่ละเอียดสำหรับทรัพยากรบนหน้าเว็บของคุณ
การตั้งค่า CSP ที่ปฏิบัติได้สำหรับการเพิ่มความปลอดภัย
ด้านล่างคือตัวอย่างการตั้งค่า CSP เพื่อเพิ่มความปลอดภัยให้เว็บไซต์ของคุณ สิ่งนี้สามารถลดความเสี่ยงจากการโจมตี XSS และการรั่วไหลของข้อมูล
1<meta http-equiv="Content-Security-Policy"
2 content="default-src 'self'; script-src 'self' https://trusted-cdn.com; object-src 'none'; style-src 'self'; base-uri 'self'; form-action 'self';">
นโยบายต่อไปนี้ถูกนำมาใช้กับการกำหนดค่านี้:
default-src 'self'
: ทรัพยากรทั้งหมดจะโหลดได้เฉพาะจากแหล่งที่มาเดียวกันscript-src 'self' https://trusted-cdn.com
: สคริปต์จะโหลดได้เฉพาะจากแหล่งที่มาเดียวกันหรือ CDN ที่เชื่อถือได้object-src 'none'
: แท็กobject
จะไม่ได้ถูกใช้งาน สิ่งนี้เพื่อป้องกันการโจมตีที่ใช้ Flash หรือปลั๊กอินstyle-src 'self'
: โหลดสไตล์ชีตเฉพาะจากต้นทางเดียวกันbase-uri 'self'
: ฐาน URL ที่กำหนดโดยแท็ก<base>
จะถูกจำกัดให้ต้นทางเดียวกันform-action 'self'
: จุดหมายปลายทางสำหรับส่งแบบฟอร์มจะถูกจำกัดให้ต้นทางเดียวกัน สิ่งนี้ลดความเสี่ยงที่ข้อมูลจากแบบฟอร์มจะถูกส่งไปยังเว็บไซต์ภายนอก
สรุป
ด้วยการใช้ http-equiv="content-security-policy"
เพื่อกำหนด CSP ใน HTML จึงเป็นไปได้ที่จะเพิ่มความปลอดภัยให้กับเว็บเพจ CSP ที่ถูกกำหนดค่าอย่างถูกต้องเป็นเครื่องมือที่ทรงพลังที่ลดความเสี่ยงจากการโจมตี XSS และการรั่วไหลของข้อมูลและปกป้องเว็บไซต์ของคุณ
คุณสามารถติดตามบทความข้างต้นโดยใช้ Visual Studio Code บนช่อง YouTube ของเรา กรุณาตรวจสอบช่อง YouTube ด้วย