Oops! It appears that you have disabled your Javascript. In order for you to see this page as it is meant to appear, we ask that you please re-enable your Javascript!

Secure Coding (ตอนที่ 1)

Secure Coding คือ แนวทางการพัฒนาซอฟต์แวร์ให้มั่นคงปลอดภัยจากผู้ไม่ประสงค์ดี โดยกระบวนการพัฒนาซอฟต์แวร์จะมีกระบวนการออกแบบ พัฒนา และ การทดสอบช่องโหว่ของซอฟต์แวร์ ตามกระบวนการในวัฏจักรวงจรการพัฒนาซอฟต์แวร์อย่างปลอดภัย  (Secure Software Development Life Cycle: S-SDLC) ซึ่ง Secure Coding เป็นส่วนหนึ่งของกระบวนการที่สำคัญ โดยแนวทางที่ OWASP แนะนำประกอบไปด้วยหัวข้อดังนี้

 

  • Input Validation ในการรับข้อมูลใด ๆ จาก Client ต้องมีการตรวจสอบข้อมูลที่รับมาถูกต้องตามที่ต้องการ
  • Output Encoding การแสดงผลข้อมูลบนหน้าเว็บ จะต้องถูกแปลงให้อยู่เป็นภาษา HTML สำหรับการแสดงผล จะสามารถป้องกันการโจมตี Cross Site Script (XSS)
  • Authentication and Password Management ซอฟต์แวร์ที่ถูกพัฒนาหากมีความสำคัญ จะต้องมีการยืนยันตัวตนก่อนเข้าใช้งาน ในทุกฟังก์ชันการใช้งาน และ รหัสผ่านสำหรับการเข้าใช้งาน ควรถูกบังคับในการตั้งรหัสผ่านอย่างแข็งแรง พร้อมทั้งการจัดเก็บรหัสผ่านห้ามเก็บในรูปแบบของ Clear Text ควรจัดเก็บโดยการใช้ฟังก์ชันแฮช (Hash Function) ที่แข็งแรง รวมถึงการใช้ค่าสุ่ม (Salt) สำหรับการป้องกันความพยายามในการหารหัสผ่านเพื่อเข้าใช้งาน (Brute Force)
  • Session Management การใช้งานเว็บนั้นจะมีการเก็บข้อมูลต่าง ๆ อยู่ในรูปของ Session และหากใช้การยืนยันตัวตน (Authentication) ด้วยก็จะมีข้อมูลถูกเก็บอยู่ในรูปแบบของ Session เช่นเดียวกัน ดังนั้น ควรที่จะต้องมี การ logout ออกจากระบบ และมีการลบข้อมูลที่ถูกเก็บอยู่ใน Session
  • Access Control ควรมีการควบคุมการเข้าใช้งานตามสิทธิ์ของการเข้าใช้งาน โดยต้องสามารถป้องกันการเข้าถึงข้อมูลของผู้อื่นนอกเหนือสิทธิ์การเข้าใช้งาน
  • Cryptographic การจัดเก็บข้อมูลที่มีความสำคัญในฐานข้อมูลต้องมีการเข้ารหัสลับที่ดีเพื่อป้องกันผู้ที่สามารถเข้าถึงฐานข้อมูล จะสามารถล่วงรู้ข้อมูลที่เป็นความลับได้
  • Error Handling and Logging ซอฟต์แวร์ที่ดี ควรที่จะปิดการแจ้งข้อผิดพลาดไม่ให้แสดง แต่สามารถแสดงอยู่ในรูปแบบของ Log ได้ และการ Log ควรจะต้อง Log การใช้งานของฟังก์ชันงานที่สำคัญ
  • Communication Security ช่องทางในการแลกเปลี่ยนข้อมูลที่มีความลับ หรือ มีข้อมูลผู้ใช้งานอยู่นั้น จะต้องป้องกันไม่ให้ผู้อื่นล่วงรู้ได้ ซึ่งข้อมูลที่ผ่านเครือข่ายนั้นมีความเสี่ยงในการล่วงรู้ข้อมูลที่ส่งผ่านในเครือข่ายได้ ดังนั้นควรใช้โพรโทคอลที่สามารถรักษาความลับได้อย่าง HTTPS

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

 

เอกสารอ้างอิง

https://www.owasp.org/index.php/Secure_Coding_Cheat_Sheet