Skip to main content

เทคนิคจูมล่า

อัปเกรดความปลอดภัยเว็บไซต์ Joomla & WordPress สู่เกรด A ด้วย Security Headers

ในยุคที่การโจมตีทางไซเบอร์เกิดขึ้นทุกวินาที การมีเพียง SSL (HTTPS) อาจไม่เพียงพออีกต่อไป หลายคนตรวจเช็คสุขภาพเว็บไซต์ผ่านเครื่องมือระดับโลกอย่าง SecurityHeaders.com แล้วต้องตกใจที่เห็นเกรด F หรือตัวแดงที่ระบุว่า "Missing Headers" บทความนี้จะสรุปเทคนิคการเปลี่ยนเว็บไซต์ของคุณให้กลายเป็นปราการเหล็กด้วย 6 Security Headers สำคัญ ที่จะช่วยให้คุณได้เกรด A+ และเพิ่มความเชื่อมั่นให้กับทั้งผู้ใช้และ Google (SEO)

ตรวจสอบเว็บคุณก่อน https://securityheaders.com/

6 บอดี้การ์ดหน้าบ้านที่เว็บไซต์ "ต้องมี"

  • 1. Strict-Transport-Security (HSTS)

    "บังคับใช้ถนนเส้นที่ปลอดภัยเท่านั้น"
    เป็นการสั่งให้ Browser จดจำว่าต้องเข้าถึงเว็บไซต์นี้ผ่าน HTTPS เท่านั้น ป้องกันการแอบดักข้อมูลในจังหวะที่เปลี่ยนจาก HTTP เป็น HTTPS (SSL Stripping)

    เปรียบเทียบ: เหมือนสั่งคนขับรถว่า "ไปบ้านนี้ต้องขึ้นทางด่วนเส้นหลักเท่านั้น ห้ามใช้ซอยเปลี่ยวเด็ดขาด"

  • 2. X-Frame-Options

    "ป้องกันการซ้อนหน้าเว็บ (Clickjacking)"
    ป้องกันไม่ให้ผู้ไม่หวังดีนำเว็บไซต์ของเราไปใส่ใน iframe แล้วทำหน้าเว็บให้โปร่งใสซ้อนทับกับเว็บปลอมเพื่อหลอกให้ผู้ใช้คลิกปุ่มสำคัญโดยไม่รู้ตัว

    เปรียบเทียบ: เหมือนการติดสติกเกอร์ "ห้ามก๊อปปี้แผ่นใส" มาวางทับหน้าจอเพื่อหลอกให้คุณเซ็นชื่อ

  • 3. X-Content-Type-Options

    "ห้ามเดาประเภทไฟล์เอง (nosniff)"
    สั่งให้ Browser เชื่อถือค่า Content-Type ที่ Server ส่งไปเท่านั้น ห้าม Browser แอบ "ดม" หรือเดาประเภทไฟล์เอง ซึ่งอาจนำไปสู่การรันสคริปต์อันตรายที่แฝงมาในรูปแบบไฟล์ภาพ

    เปรียบเทียบ: เหมือนคนส่งพัสดุบอกว่า "นี่คือเสื้อผ้า" คุณก็ต้องใช้งานแบบเสื้อผ้า ไม่ใช่พยายามแงะดูว่ามีระเบิดซ่อนอยู่ข้างในไหม

  • 4. Referrer-Policy

    "จำกัดข้อมูลที่บอกเว็บอื่น"
    ควบคุมการส่งข้อมูล URL ต้นทางเมื่อมีการคลิกลิงก์ไปยังเว็บไซต์อื่น เพื่อรักษาความเป็นส่วนตัวและป้องกันข้อมูลสำคัญใน URL รั่วไหล

    เปรียบเทียบ: เหมือนคุณเดินออกจากบ้านเพื่อนไปห้าง เมื่อห้างถามว่ามาจากไหน คุณจะตอบแค่ว่า "มาจากบ้าน" แทนการบอกเลขที่บ้านเต็มๆ ของเพื่อน

  • 5. Permissions-Policy

    "ใบอนุญาตเข้าถึงอุปกรณ์"
    จำกัดการเข้าถึงฮาร์ดแวร์ของผู้ใช้ เช่น กล้อง (Camera), ไมโครโฟน (Microphone) หรือตำแหน่ง (Geolocation) เพื่อให้มั่นใจว่าต่อให้เว็บมีช่องโหว่ แฮกเกอร์ก็ไม่สามารถแอบสั่งเปิดกล้องส่องผู้ใช้ได้

  • 6. Content-Security-Policy (CSP)

    "บอดี้การ์ดคัดกรองแขก"
    กฎเหล็กที่ระบุว่า "แหล่งที่มาใดบ้าง" ที่ได้รับอนุญาตให้รันโค้ดบนหน้าเว็บของเรา ช่วยป้องกันการโจมตีประเภท XSS (Cross-Site Scripting) ได้อย่างมีประสิทธิภาพที่สุด

    เปรียบเทียบ: เหมือนงานปาร์ตี้ส่วนตัวที่มีรายชื่อแขกหน้างาน ใครไม่มีชื่อในโพย ต่อให้เดินมาถึงหน้าประตูก็เข้างานไม่ได้

วิธีการตั้งค่าใน Joomla และ WordPress

สำหรับ Joomla 4 และ 5 และ 6

Joomla รุ่นใหม่มีระบบจัดการมาให้ในตัวผ่านปลั๊กอิน "System - HTTP Headers":

ไปที่ System -> Manage -> Plugins ค้นหา "HTTP Headers"

เปิดใช้งานและตั้งค่าในแท็บ HSTS และ CSP 3. ในแท็บ Plugin สามารถเปิดใช้งาน X-Content-Type-Options และ Referrer-Policy ได้ทันที

Force HTTP Headers เพิ่ม Permissions-Policy

camera=(), microphone=(), geolocation=(), payment=()

Strict-Transport-Security (HSTS)

Content-Security-Policy (CSP) เปิด เพิ่ม Add Directive

กดปุ่ม "Add Directive" (ปุ่มสีเขียวด้านล่าง) แล้วเพิ่มกฎพื้นฐานเหล่านี้เพื่อความปลอดภัย: default-src: ตั้งค่าเป็น 'self' (อนุญาตเฉพาะไฟล์ในเว็บตัวเอง) script-src: ตั้งค่าเป็น 'self' 'unsafe-inline' 'unsafe-eval' (สำหรับ CMS อย่าง Joomla มักต้องยอมให้ใช้ inline script บ้างเพื่อให้ Plugin ทำงานได้) img-src: ตั้งค่าเป็น 'self' data: https: (เพื่อให้อัปโหลดรูปและดึงรูปจากเว็บอื่นที่เป็น https ได้)

สำหรับ Joomla 3 Wordpress หรือเว็บอื่นๆ

ผมแนะนำให้ใช้ .htaccess หรือ Server Block สำหรับ nginx

สำหรับ Nginx (Config ที่ไฟล์ Server Block)

หากคุณใช้ Nginx เป็น Reverse Proxy ให้เพิ่มบรรทัดเหล่านี้ในไฟล์ Config:
# HSTS (1 ปี) add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; # CSP (ตัวอย่างเบื้องต้น) add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; object-src 'none';" always; # X-Frame-Options (ป้องกัน Clickjacking) add_header X-Frame-Options "SAMEORIGIN" always; # X-Content-Type-Options add_header X-Content-Type-Options "nosniff" always; # Referrer-Policy add_header Referrer-Policy "strict-origin-when-cross-origin" always;

เพิ่มโค้ดนี้ลงไปที่ด้านบนสุดของไฟล์ .htaccess:

<IfModule mod_headers.c> # HSTS Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" # X-Frame-Options Header set X-Frame-Options "SAMEORIGIN" # X-Content-Type-Options Header set X-Content-Type-Options "nosniff" # Referrer-Policy Header set Referrer-Policy "strict-origin-when-cross-origin" # CSP (ตัวอย่างพื้นฐาน - ปรับแต่งตามการใช้งาน) Header set Content-Security-Policy "upgrade-insecure-requests" </IfModule>