security-header

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

คำอธิบายของ Security Header ว่ามีผลอย่างไรบ้าง?

Strict-Transport-Security

HTTP Strict-Transport-Security (HSTS) ข้อกำหนดเบราว์เซอร์ว่าควรเข้าถึงไซต์โดยใช้ HTTPS เท่านั้น ซึ่งจะป้องกันไม่ให้แฮกเกอร์ทำการโจมตีแบบ man-in-the-middle attack

Content-Security-Policy

Content-Security-Policy (CSP) เป็นชั้นการรักษาความปลอดภัยเพิ่มเติมที่ช่วยตรวจจับและลดการโจมตีบางประเภท รวมถึง Cross-Site Scripting (XSS) และการโจมตีด้วย data injection attacks การโจมตีเหล่านี้ใช้สำหรับทุกอย่างตั้งแต่การขโมยข้อมูล การทำให้ไซต์เสียหาย ไปจนถึงการกระจายมัลแวร์

X-XSS-Protection

HTTP X-XSS-Protection เป็นคุณลักษณะของ Internet Explorer, Chrome และ Safari ที่หยุดการโหลดหน้าเว็บเมื่อตรวจพบการโจมตีแบบ cross-site scripting (XSS) การป้องกันเหล่านี้ไม่จำเป็นอย่างยิ่งในเบราว์เซอร์สมัยใหม่เมื่อไซต์ใช้ Content-Security-Policy ที่เข้มงวดซึ่งปิดใช้งานการใช้ inline JavaScript ('unsafe-inline')

X-Frame-Options

HTTP X-Frame-Options สามารถใช้เพื่อระบุว่าเบราว์เซอร์ควรได้รับอนุญาตให้แสดงหน้าเว็บใน <frame>, <iframe>, <embed> หรือ <object> หรือไม่ ไซต์สามารถใช้สิ่งนี้เพื่อหลีกเลี่ยงการโจมตีแบบ Click-jacking โดยตรวจสอบให้แน่ใจว่าเนื้อหาของไซต์ไม่ได้ถูกฝังลงในไซต์อื่น

X-Content-Type-Options

X-Content-Type-Options เป็น Header ที่จะป้องกันการโจมตีด้วยการส่งข้อมูลที่ไม่ถูกต้องตามประเภทของไฟล์ (MIME types) เช่น การส่งข้อมูลที่ไม่ใช่ไฟล์ที่ต้องการก็จะไม่ถูกนำมาประมวลผลตามประเภทของไฟล์

Referrer-Policy

HTTP Referrer-Policy HTTP จะควบคุมจำนวนข้อมูลผู้อ้างอิง (ส่งพร้อมกับส่วนหัวของ Referer) ที่ควรรวมเข้ากับคำขอ นอกจากส่วนหัว HTTP แล้ว คุณสามารถตั้งค่านโยบายนี้เป็น HTML ได้

Permissions-Policy

หากใช้ Nginx สามารถ config ได้ที่ไฟล์ nginx.conf

http {
    #hide version nginx
    server_tokens off;

    #security header
    add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';
    add_header Content-Security-Policy "default-src 'self';";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options nosniff;
    add_header Referrer-Policy "strict-origin";
    add_header Permissions-Policy "geolocation=()";
}