HTTP Security Headers ที่เว็บไซต์ควรมี
HTTP Security Headers ที่เว็บไซต์ควรมี
Security headers คือ HTTP response headers ที่สั่งนโยบายฝั่งเบราว์เซอร์ OWASP Secure Headers Project รวบรวมชุดที่ควรตั้งเป็นค่าเริ่มต้น
Headers สำคัญ
Strict-Transport-Security (HSTS)
บังคับ HTTPS ตาม RFC 6797
code
Strict-Transport-Security: max-age=31536000; includeSubDomainsContent-Security-Policy (CSP)
จำกัดแหล่งสคริปต์ สไตล์ และเฟรม ลดผลกระทบ XSS ดู MDN CSP
code
Content-Security-Policy: default-src 'self'; frame-ancestors 'self'X-Content-Type-Options
code
X-Content-Type-Options: nosniffป้องกัน MIME sniffing ตามที่อธิบายใน MDN X-Content-Type-Options
ป้องกันการฝังเฟรม
X-Frame-Options ถูกกำหนดใน RFC 7034 แต่ปัจจุบันแนะนำ Content-Security-Policy: frame-ancestors ซึ่งยืดหยุ่นกว่า
Referrer-Policy และ Permissions-Policy
code
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=(), geolocation=()ตัวอย่าง Apache
apache
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Content-Security-Policy "default-src 'self'; frame-ancestors 'self'"ตัวอย่าง Nginx
nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Content-Security-Policy "default-src 'self'; frame-ancestors 'self'" always;อย่าส่ง X-XSS-Protection: 1; mode=block อีกแล้ว OWASP แนะนำให้ปิดหรือไม่ส่ง เพราะตัวกรอง XSS ในเบราว์เซอร์เก่ามีผลข้างเคียง
สรุป
เริ่มจาก HSTS, nosniff, Referrer-Policy และ frame-ancestors แล้วค่อยออกแบบ CSP ให้เข้ากับแอป ตรวจด้วยสแกนเนอร์ headers เป็นระยะ