การกำหนดค่าส่วนหัวความปลอดภัย 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/