การกำหนดค่าส่วนหัวความปลอดภัย HTTP บน WordPress
เผยแพร่แล้ว: 2022-02-23เบราว์เซอร์ที่ทันสมัยส่วนใหญ่รองรับส่วนหัวความปลอดภัย HTTP ที่หลากหลายเพื่อปรับปรุงการรักษาความปลอดภัยของเว็บไซต์ WordPress ของคุณ ปกป้องผู้เยี่ยมชมของคุณจากการโจมตีของเบราว์เซอร์ เช่น การคลิกแจ็ค การเขียนสคริปต์ข้ามไซต์ และการโจมตีทั่วไปอื่นๆ ได้ดีขึ้น และปรับปรุงความเป็นส่วนตัวของผู้เยี่ยมชมเว็บไซต์ของคุณ ออนไลน์
บทความนี้ให้ภาพรวมว่าส่วนหัวความปลอดภัย HTTP เหล่านี้คืออะไร อธิบายวิธีทำงานและขอบเขต นอกจากนี้ยังอธิบายวิธีที่คุณสามารถเพิ่มส่วนหัวความปลอดภัย HTTP เหล่านี้ในเว็บไซต์ของคุณเพื่อปรับปรุงความปลอดภัยของเว็บไซต์ WordPress ของคุณ
ส่วนหัวความปลอดภัย HTTP คืออะไร
ส่วนหัวความปลอดภัย HTTP เป็นชุดของส่วนหัว HTTP 1 แลกเปลี่ยนระหว่างเว็บไคลเอ็นต์ (เบราว์เซอร์) และเว็บเซิร์ฟเวอร์ซึ่งใช้เพื่อระบุการตั้งค่าที่เกี่ยวข้องกับความปลอดภัยของการสื่อสาร HTTP ระหว่างเว็บไคลเอ็นต์และเซิร์ฟเวอร์ การเปิดใช้งานส่วนหัวด้านความปลอดภัยบนเว็บไซต์ WordPress ของคุณสามารถปรับปรุงความยืดหยุ่นของเว็บไซต์ของคุณต่อการโจมตีทั่วไป ซึ่งรวมถึงการเขียนสคริปต์ข้ามไซต์ (XSS) และการคลิกแจ็ค
ส่วนหัวความปลอดภัย HTTP สามารถปรับปรุงความปลอดภัยของ WordPress ได้อย่างไร
ส่วนหัวความปลอดภัย HTTP สามารถช่วยปรับปรุงการรักษาความปลอดภัยของเว็บไซต์ WordPress ของคุณโดยสั่งเบราว์เซอร์ให้เปิดใช้งานคุณสมบัติความปลอดภัยที่หลากหลายตามนั้น ในหลายกรณี การใช้ส่วนหัวที่ถูกต้องเป็นเรื่องยุ่งยากและอาจให้ผลลัพธ์ที่แตกต่างกัน (หรือไม่ได้ผลโดยสิ้นเชิง) ในเบราว์เซอร์รุ่นเก่า ดังนั้นจึงเป็นแนวทางปฏิบัติที่ดีที่สุดที่จะลองเปลี่ยนแปลงใดๆ ในสภาพแวดล้อมการทดสอบหรือการแสดงละครก่อนที่จะใช้การเปลี่ยนแปลงใดๆ เว็บไซต์ WordPress สด
ส่วนหัวความปลอดภัย HTTP ที่ใช้บ่อยที่สุด
หัวไหนทำอะไร? มาดูภาพรวมของส่วนหัวความปลอดภัย HTTP ที่สำคัญและใช้บ่อยที่สุด
เข้มงวด-ขนส่ง-ความปลอดภัย
ส่วนหัว HTTP Strict-Transport-Security HTTP แนะนำให้เบราว์เซอร์บังคับใช้ HTTP Strict Transport Security (HSTS) 2 . ส่วนหัว HSTS สั่งให้เบราว์เซอร์ที่เข้าชมเข้าถึงไซต์ผ่าน HTTPS เสมอ (แทนที่จะเป็น HTTP) แม้ว่าผู้ใช้ (หรือผู้โจมตีที่พยายามเรียกใช้การโจมตีแบบ Man-in-the-Middle) พยายามเข้าถึงไซต์ผ่าน HTTP เบราว์เซอร์จะบังคับให้เปลี่ยนเป็น HTTPS แม้ว่า HTTP จะไม่พร้อมใช้งาน - ในขอบเขตดังกล่าว คุณควรเปิดใช้งาน HSTS หากคุณเปิดใช้งาน HTTPS และทำงานอย่างถูกต้องโดยไม่มีปัญหาเนื้อหาผสม 3 .
ส่วนหัวตอบกลับ HTTP Strict Transport Security (HSTS) ต่อไปนี้เปิดใช้งาน HSTS เป็นระยะเวลา 1 ปี (31536000 วินาที)
Strict-Transport-Security: max-age=31536000
เนื้อหา-ความปลอดภัย-นโยบาย
ส่วนหัวความปลอดภัย HTTP ของเนื้อหา-ความปลอดภัย-นโยบายคือส่วนหัว HTTP ที่มีพลังและความสามารถในการกำหนดค่าจำนวนมาก กำหนดค่านโยบายความปลอดภัยของเนื้อหา (CSP) ของเบราว์เซอร์ซึ่งเป็นชุดคุณลักษณะด้านความปลอดภัยที่พบในเบราว์เซอร์สมัยใหม่ซึ่งมีชั้นความปลอดภัยเพิ่มเติมซึ่งช่วยในการตรวจจับและลดการโจมตี เช่น Cross-Site Scripting (XSS) และการโจมตีด้วยการฉีดข้อมูล
นโยบายการรักษาความปลอดภัยของเนื้อหา (CSP) ยังเป็นที่ทราบกันดีว่ายากที่จะได้รับสิทธิ์ เนื่องจากการตั้งค่า CSP ที่ถูกต้องจะขึ้นอยู่กับเว็บไซต์ที่เป็นปัญหาอย่างมาก และควรได้รับการทดสอบอย่างหนักก่อนนำไปใช้งาน ดังนั้นจึงมี Content-Security-Policy ที่เป็นน้องสาว -รายงาน-เฉพาะ 4 ส่วนหัว HTTP ใช้สำหรับทดสอบ CSP เท่านั้น
ต่อไปนี้คือตัวอย่างของนโยบายนโยบายเนื้อหาและความปลอดภัย (CSP) ที่ค่อนข้างเรียบง่ายซึ่งอนุญาตให้โหลดเนื้อหาจากต้นทางที่เว็บไซต์ให้บริการเท่านั้น
Content-Security-Policy: default-src 'self'
อย่างไรก็ตาม นโยบายความปลอดภัยเนื้อหา (CSP) สามารถกำหนดค่าได้มากกว่าที่แสดงในตัวอย่างนี้ CSP มีคำสั่งอื่นๆ เช่น script-src , style-src และ img-src เพื่อระบุแหล่งที่มาที่เบราว์เซอร์อาจโหลดเนื้อหา (เช่น CSS, รูปภาพ และฟอนต์) จาก สำหรับรายการทั้งหมดเกี่ยวกับวิธีกำหนดค่า CSP ให้ดูที่แนวทางอ้างอิงอย่างรวดเร็วของนโยบายความปลอดภัยเนื้อหา
X-Content-Type-Options
ส่วนหัวความปลอดภัย X-Content-Type-Options HTTP เป็นส่วนหัวที่ไม่ได้มาตรฐานซึ่งเป็นที่ยอมรับของเบราว์เซอร์หลักทั้งหมดที่ป้องกันการโจมตี Cross-site Scripting (XSS) ที่เกิดจากการดมกลิ่นประเภท MIME 5 . เมื่อปรากฏ ส่วนหัวนี้จะบอกให้เบราว์เซอร์ปฏิบัติตามประเภท MIME ที่กำหนดไว้ในส่วนหัว HTTP ของประเภทเนื้อหาอย่างเคร่งครัด และเบราว์เซอร์ไม่ควรพยายามตรวจหาประเภท MIME ที่ถูกต้องสำหรับข้อมูลตอบกลับเอง ส่วนหัวมีคำสั่งเดียว — nosniff
X-Content-Type-Options: nosniff
ส่วนหัวความปลอดภัย HTTP เก่าหรือไม่ได้ใช้
นอกจากนี้ยังมีส่วนหัวความปลอดภัย HTTP ที่เก่าและไม่ได้ใช้จำนวนมาก สิ่งเหล่านี้ไม่ได้ใช้แล้วหรือใช้งานไม่ได้อีกต่อไปเพราะถูกนำมาใช้เป็นการแก้ไขชั่วคราว การทดลอง หรือแม้แต่ความคิดริเริ่มที่ไม่ได้มาตรฐานซึ่งเลิกใช้แล้วหรือถูกแทนที่ทั้งหมดตั้งแต่นั้นเป็นต้นมา ด้านล่างนี้คือรายการส่วนหัวความปลอดภัย HTTP เหล่านี้
ส่วนหัวความปลอดภัย HTTP แทนที่ด้วย Content-Security-Policy
X-Frame-Options
ส่วนหัวความปลอดภัย X-Frame-Options HTTP เป็นส่วนหัวที่เลิกใช้แล้ว ซึ่งเปิดตัวครั้งแรกโดย Microsoft Internet Explorer (และนำมาใช้โดยเบราว์เซอร์อื่นๆ ที่มีระดับความสม่ำเสมอและความเข้ากันได้ที่แตกต่างกัน) เพื่อปกป้องเบราว์เซอร์จาก Cross-site Scripting (XSS), Clickjacking และ การโจมตีอื่นๆ ที่อาศัยเว็บไซต์ที่วางอยู่ภายใน iframe
ส่วนหัวนี้ได้ถูกแทนที่ด้วยคำสั่ง Content Security Policy (CSP) ของบรรพบุรุษเฟรม ขอแนะนำให้ใช้ CSP กับคำสั่งของบรรพบุรุษเฟรมแทนที่ X-Frame-Options
X-XSS-การป้องกัน
ส่วนหัวความปลอดภัย X-XSS-Protection HTTP เป็นส่วนหัวที่ไม่ได้มาตรฐานซึ่งนำมาใช้เพื่อเปิดใช้งานหรือปิดใช้งานการป้องกันเบราว์เซอร์จากการโจมตี Cross-site Scripting (XSS) ในทางปฏิบัติ ส่วนหัวนี้มักง่ายสำหรับผู้โจมตีที่จะเลี่ยงผ่าน และด้วยเหตุนี้เบราว์เซอร์สมัยใหม่ส่วนใหญ่จึงเพิกเฉย
กุญแจสาธารณะ-หมุด
ส่วนหัวความปลอดภัย HTTP ของ Public-Key-Pins ใช้ในการกำหนดค่าคุณสมบัติการรักษาความปลอดภัย Public Key Pinning (HPKP) ที่ได้รับการแนะนำใน Google Chrome และ Firefox เพื่อป้องกันการปลอมแปลงใบรับรอง TLS HPKP ทำงานโดยให้เว็บเซิร์ฟเวอร์จัดเตรียมชุดแฮชเข้ารหัสของคีย์สาธารณะของใบรับรอง TLS ที่เว็บไซต์ใช้ให้กับเบราว์เซอร์ ซึ่งเบราว์เซอร์จะใช้ในทางกลับกันเพื่อเปรียบเทียบกับใบรับรองที่ได้รับจากเซิร์ฟเวอร์ในคำขอที่ตามมา ปัญหาคือ HPKP ค่อนข้างซับซ้อนในการจัดการและมักส่งผลให้มีการกำหนดค่าผิดพลาดที่อาจปิดการใช้งานการเข้าถึงเว็บไซต์โดยสิ้นเชิง ดังนั้นจึงไม่แนะนำให้ใช้อีกต่อไป
การเพิ่ม HTTP Security Headers ใน WordPress
ส่วนหัวความปลอดภัย HTTP จะทำงานได้ดีที่สุดเมื่อมีการกำหนดค่าบนเว็บเซิร์ฟเวอร์ของคุณ หรือหากทำได้ เครือข่ายการจัดส่งเนื้อหา (CDN) หรือไฟร์วอลล์แอปพลิเคชันเว็บ ซึ่งช่วยให้สามารถส่งตามคำขอแต่ละรายการได้ คุณสามารถใช้ปลั๊กอิน WordPress เพื่อตั้งค่าส่วนหัวเหล่านี้ให้คุณได้
ตอนนี้เราได้ครอบคลุมวัตถุประสงค์ของส่วนหัวความปลอดภัย HTTP แล้ว ต่อไปนี้คือวิธีการบางส่วนที่สามารถเปิดใช้งานบนเว็บไซต์ WordPress ของคุณ
การเพิ่มส่วนหัวความปลอดภัย HTTP ใน WordPress โดยใช้ Apache HTTP Server
ต่อไปนี้คือตัวอย่างการกำหนดค่าสำหรับ Apache HTTP Server ที่จำเป็นสำหรับการเปิดใช้งาน HTTP Strict Transport Security (HSTS), X-Content-Type-Options และนโยบายความปลอดภัยเนื้อหาอย่างง่าย
<ifModule mod_headers.c> Header set Strict-Transport-Security "max-age=31536000" Header set X-Content-Type-Options "nosniff" Header set Content-Security-Policy "default-src 'self'" </ifModule>
การเพิ่มส่วนหัวความปลอดภัย HTTP ใน WordPress โดยใช้ Nginx
ในทำนองเดียวกัน ต่อไปนี้เป็นตัวอย่างของการกำหนดค่าสำหรับ Nginx ที่จำเป็นในการเปิดใช้งาน HTTP Strict Transport Security (HSTS), X-Content-Type-Options และนโยบายความปลอดภัยเนื้อหาอย่างง่าย
server { add_header Strict-Transport-Security "max-age=31536000; always; add_header X-Content-Type-Options "nosniff" always; add_header Content-Security-Policy "default-src 'self'" always; }
การเพิ่มส่วนหัวความปลอดภัย HTTP ใน WordPress โดยใช้ปลั๊กอิน
ในขณะที่มีประสิทธิภาพน้อยกว่า (เนื่องจากต้องอาศัย WordPress ในการแก้ไขส่วนหัว) การใช้ปลั๊กอิน WordPress อาจเป็นวิธีที่ง่ายที่สุดในการเพิ่มส่วนหัวความปลอดภัย HTTP ให้กับเว็บไซต์ WordPress ของคุณ ปลั๊กอิน เช่น ปลั๊กอิน Redirection ช่วยให้คุณสามารถเพิ่มส่วนหัว HTTP ที่กำหนดเองลงในเว็บไซต์ของคุณได้
วิธีตรวจสอบส่วนหัวความปลอดภัย HTTP สำหรับเว็บไซต์
เมื่อคุณเพิ่มส่วนหัวความปลอดภัย HTTP บนเว็บไซต์ WordPress แล้ว คุณต้องแน่ใจว่าส่วนหัวเหล่านั้นได้รับการกำหนดค่าอย่างถูกต้องและทำงานตามที่คุณคาดหวัง วิธีที่ง่ายที่สุดในการทดสอบคือการใช้เครื่องมือฟรีที่เรียกว่า Security Headers 6 .
การใช้เครื่องมือ Security Headers นั้นง่ายพอๆ กับการป้อน URL เว็บไซต์ของคุณและกดปุ่ม “Scan” จากนั้นคุณจะได้รับเกรดจาก A+ ถึง F พร้อมคำอธิบายว่าเกรดนั้นได้รับการพิจารณาอย่างไร
ข้อมูลอ้างอิงที่ใช้ในบทความนี้
↑ 1 | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers |
---|---|
↑ 2 | https://owasp.org/www-project-secure-headers/#http-strict-transport-security |
↑ 3 | https://web.dev/what-is-mixed-content/ |
↑ 4 | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only |
↑ 5 | https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#mime_sniffing |
↑ 6 | https://securityheaders.com/ |