กำหนด 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 ปีและรวมถึงโดเมนย่อย)
4. ผลการ scan หลังทำการเพิ่มคำสั่งดังกล่าว
