กำหนด Security Header สำหรับ .Net Core Blazor
- หากท่าน scan ด้วยเว็บไซต์ https://securityheaders.com แล้วได้ผลลัพธ์ดังภาพ
- เพิ่มคำสั่งในไฟล์ Program.cs หรือ Startup.cs ดังนี้
app.Use(async (context, next) => { context.Response.Headers.Append("Content-Security-Policy", "default-src * data:; script-src * 'unsafe-inline' 'unsafe-eval'; style-src * 'unsafe-inline';"); context.Response.Headers.Append("X-Frame-Options", "SAMEORIGIN"); context.Response.Headers.Append("X-Content-Type-Options", "nosniff"); context.Response.Headers.Append("Referrer-Policy", "no-referrer"); context.Response.Headers.Append("Permissions-Policy", "microphone=(), geolocation=()"); context.Response.Headers.Append("Strict-Transport-Security", "max-age=31536000; includeSubDomains"); await next(); });
- Content-Security-Policy (CSP): กำหนดแหล่งที่มาของเนื้อหาที่อนุญาต อนุญาตุทุกแหล่งโดยเริ่มต้น (สามารถเพิ่มความปลอดภัยโดยระบุเป็น self อย่างเดียว ในกรณีไม่ได้ใช้ CDN ใดๆ หรือระบุเจาะจงเฉพาะแหล่งที่ใช้งานจริงๆ เท่านั้น)
- X-Frame-Options: ป้องกันไม่ให้หน้าเว็บถูกแสดงใน iframe (SAMEORIGIN ทำให้สามารถแสดงบน iframe โดยเว็บที่อยู่บน domain เดียวกันเท่านั้น)
- X-Content-Type-Options: ป้องกันไม่ให้เบราว์เซอร์ตีความไฟล์เป็นชนิด MIME อื่น (nosniff)
- Referrer-Policy: ควบคุมปริมาณข้อมูลผู้อ้างอิงที่ส่งพร้อมกับคำขอ (no-referrer หมายถึงไม่มีข้อมูลผู้อ้างอิงที่จะถูกส่ง)
- Permissions-Policy: ควบคุมว่าฟีเจอร์ของเบราว์เซอร์ใดสามารถใช้งานได้ (microphone=(), geolocation=() ไม่อนุญาตให้ใช้ไมโครโฟนและตำแหน่งที่ตั้ง)
- Strict-Transport-Security (HSTS): บังคับใช้การเชื่อมต่อที่ปลอดภัย (HTTPS) กับเซิร์ฟเวอร์ (max-age=31536000; includeSubDomains กำหนดระยะเวลา 1 ปีและรวมถึงโดเมนย่อย)
- ผลการ scan หลังทำการเพิ่มคำสั่งดังกล่าว