สิ่งที่นักพัฒนา software ควรต้องรู้และเข้าใจสำหรับ code ที่เขียนคือ
code ที่เขียนขึ้นมานั้นปลอดภัยหรือไม่ ?
แน่นอนว่า
นักพัฒนาบางคนอาจจะบอกว่า
แค่เขียน code ให้เสร็จตามเวลาก็ถือว่าดีแล้ว
ส่วนเรื่องของ security ไม่ใช่หน้าที่
ให้ทางฝ่าย security ดูเองก็แล้วกัน
ถ้ามีเจอปัญหาอะไรก็แจ้งมา เดี๋ยวแก้ไขให้ !!

แต่คิดว่าไม่น่าจะเป็นแนวคิด แนวทางที่ดีนัก
เนื่องจากนักพัฒนาต้องมีความรู้และเข้าใจ
การเขียน code ให้มีความปลอดภัยกันบ้าง
อ่านเจอบทความเรื่อง S.A.F.E จึงนำมาสรุปไว้นิดหน่อย

Sensitive
Access control
Foolproof
Enforce

Sensitive

ใน source code ไม่มีข้อมูลหรือเก็บข้อมูล sessitive data หรือไม่
เช่น password, ข้อมูลที่เป็นความลับหรือส่วนตัว และ session หรือ token ต่าง ๆ
รวมทั้งเก็บใน version control มีด้วยหรือไม่
ถ้ามีก็ให้แยกออกมาโดยด่วน

ข้อมูลที่ส่งไปมาระหว่าง server นั้น
ทำการเข้ารหัสหรือไม่

ในส่วนของ log message ต่าง ๆ
ทำการเก็บข้อมูล sesitive data หรือไม่
หรือข้อมูลส่วนตัวที่ไม่ได้รับอนุญาตจากเจ้าของหรือไม่

ดังนั้นตรวจสอบกันด้วยนะ !!

Access control

การเข้าถึงข้อมูลต่าง ๆ ยิ่งเป็น sesitive data แล้วนั้น
มีขั้นตอน authentication และ authorization หรือไม่
พูดง่าย ๆ คือ
authentication คือคุณเป็นใครในระบบ
authorization คือคุณมีสิทธิ์ต่าง ๆ ในการเข้าถึงหรือไม่

รวมถึงการเข้าถึงทุก ๆ ครั้งต้องมี log สำหรับการตรวจสอบอีกด้วย
ทั้งสำเร็จและไม่สำเสร็จ

Foolproof

เราทำการตรวจสอบในแต่ละ request หรือไม่ ?
ทั้งการตรวจสอบข้อมูลว่า เป็นไปตามที่ต้องการหรือไม่
เพื่อลดปัญหาต่าง ๆ ทั้ง JavaScript และ SQL Injection

เมื่อทำการส่งผล error กลับไปยังผู้เรียก
ต้องไม่ส่งรายละเอียดของการทำงานภายในออกไป
เพราะว่า มันอาจจะเป็นข้อมูลที่ใช้ในโจมตีระบบได้เลย
ยกตัวอย่างเช่นถ้า password ผิด น่าจะแจ้งด้วยคำว่า login fail มากกว่า password ผิดนะ

Enforce

นักพัฒนาไม่รู้หรอกว่า code ที่เขียนมานั้น ปลอดภัยหรือไม่ ?
ดังนั้นจำเป็นต้องการการตรวจสอบและทดสอบเสมอ
นั่นหมายความว่า
การออกแบบระบบปลอดภัยหรือไม่ ?
ทำการ review code สำหรับเรื่อง security อยู่อย่างเสมอ
ต้องทำการตรวจสอบและทดสอบเรื่องของ security แบบอัตโนมัติ
อย่ารอให้พัฒนาระบบทั้งหมดเสร็จก่อนนะ จึงมาทดสอบ
ทำให้เป็นกิจกรรมที่เกิดขึ้นอยู่อย่างเสมอ

สุดท้ายแล้ว

น่าจะช่วยทำให้ code ที่เขียนขึ้นมานั้นปลอดภัยมากขึ้น
นักพัฒนาลองเข้าไปศึกษาเพิ่มเติมได้ที่ OWASP

ยิ่งถ้าบริษัทไหนมี security specialist/expert แล้ว
ให้คนเหล่านั้นมาสอน มาเขียนให้ดูเลยครับ

ขอให้สนุกกับการเขียน code นะครับ