สมัยนี้เวลาทำเว็บหรือระบบอะไรสักอย่าง ต้องคิดเสมอว่า

  • มีคนมา scan port แน่ ๆ อย่าลืม firewall
  • ssh ตั้งรหัสให้ยาก ๆ หรือไม่ก็ใช้ public key ไปเลย
  • มี request แปลก ๆ เข้ามาตลอดเวลา
  • โดนยิงแน่นอนล้าน % ทำ rate limit ไว้ด้วย
  • มี input แปลก ๆ เข้ามาแน่นอนถึงแม้ว่าจะ validate ที่ frontend แล้ว อย่าลืม validate อีกที ที่ backend ด้วย
  • logout ต้อง logout จริง ๆ ไม่ใช่แค่ลบค่าแค่บน client
  • UGC โดน XSS แน่นอน อย่าลืม sanitize
  • สมัยนี้ไม่น่ามีคนใช้ http ละมั้ง ?
  • backend ต่อ database ถ้าไม่ใช่ internal network ให้ใช้ tls เสมอ หรือถ้า database ไม่ support ให้ต่อผ่าน tls proxy เสมอ
  • backend คุยกันเอง ถ้าไม่ใช่ internal network ให้คุยผ่าน https เสมอ (ใช้ self-signed ก็ได้ แต่ verify ca ด้วย)
  • Cookie ใส่ HttpOnly + Secure (+ SameSite) ด้วย
  • ใส่ HSTS ด้วย ถ้าเป็นไปได้ใช้ includeSubDomains (+ preload) ไปเลย
  • อย่าเก็บรหัสผ่านตรง ๆ ลง database (สมัยนี้ไม่น่ามีคนทำแบบนี้แล้วมั้ง) แล้วก็อย่าใช้ hash function ที่ไม่ปลอดภัย มา hash password (เช่น md5 เลิกใช้ได้แล้ว)
  • hash session id ก่อนเก็บลง database ด้วยก็ดี เวลามีคนอ่าน database จะได้เอา session มาใช้ไม่ได้
  • ระบบ authen ควรเป็น stateful จะได้ revoke ได้
  • ถ้าไม่ได้ทำ open api, cors เปิดแค่เว็บเราก็พอ ไม่ต้องใจดีเปิดให้ทุกคนใช้
  • อย่าลืม verify Origin/Referer ด้วย (Referer นะ ไม่ใช่ Referrer)
  • normalize email ก่อนเก็บลง database ด้วย!!!
  • พวก public static file ตั้งชื่อให้ไม่ซ้ำแล้วใส่ cache control จัดเต็มไปเลย
  • http server อย่าลืมใส่ read/write/idle timeout ด้วย
  • อ่าน data จาก user (json, form, ฯลฯ) ให้ limit size ด้วย (เช่นใช้ LimitReader มาครอบ body)
  • SQL Injection คงไม่ต้องพูดถึงละมั้ง คงไม่มีใครใช้ string concat หรอกนะ
  • ระวังเรื่อง memory leak ด้วย
  • auto backup database ทุกวัน
  • ก่อนทำอะไรกับ database ให้รัน backup ก่อนเสมอ
  • อย่าเอา credential push ขึ้น git ทั้ง public และ private repo ถึงลบแล้ว มันก็จะอยู่ใน history (นอกจากจะ force push แก้ history)

เดบิต : ไปเจอมาใน facebook จำไม่ได้ละ

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.