IBM ได้แนะนำ Best Practice ที่ต้องคำนึงถึงสำหรับการพัฒนาเว็ปแอปพลิเคชัน ดังนั้นเราจึงขอสรุปให้ทุกท่านได้ติดตามกันครับ

หากพิจารณาถึงวัตถุประสงค์การโจมตีของแฮ็กเกอร์นั้นเป็นไปได้หลากหลายเช่น หวังขโมยข้อมูล หวังผลทางการเงิน รบกวนระบบให้ดำเนินการไม่ได้ หรือทำให้ภาพลักษณ์ของบริษัทติดลบ อย่างไรก็ดีเชื่อแน่ว่าไม่มีองค์กรใดอยากตกเป็นเหยื่อของการโจมตีอยู่แล้ว ทั้งนี้เว็ปแอปพลิเคชันก็เป็นหนึ่งในช่องทางโจมตียอดนิยมที่มักตกเป็นเป้า ดังนั้นจะทำให้อย่างไรให้สิ่งเหล่านั้นเอาตัวรอดจากการโจมตีได้
1.) ใส่ใจตั้งแต่การออกแบบ
การคำนึงถึงเรื่องความมั่นคงปลอดภัยได้เร็วเท่าไรก็จะยิ่งทำให้ลดค่าใช้จ่ายและเวลาที่ต้องมาแก้ปัญหาในภายหลังเท่านั้น อย่างไรก็ดีหากเราไม่สามารถฝังหัวเรื่องความมั่นคงปลอดภัยไว้ในช่วงการออกแบบได้จริงๆ ท่านก็ยังสามารถเลี่ยงไปใช้กระบวนการที่ชื่อ ‘Threat Modeling’ ซึ่งเป็นการให้ผู้วางโครงสร้างด้านความมั่นคงปลอดภัยนั่งคุยกับทีมพัฒนาแอป ถึงภัยต่างๆ ที่อาจเกิดขึ้นว่ามีการคิดไว้แล้วหรือยังเช่น ข้อมูลสำคัญถูกเข้ารหัสไว้ไหมตอนเก็บและใช้งาน หรือได้คิดถึงเรื่องสิทธิ์ในการเข้าถึงหรือยัง เป็นต้น
2.) พัฒนาอย่างมั่นคงปลอดภัย
นักพัฒนาเองควรจะได้รับการอบรมเกี่ยวกับ OWASP Top 10 หรือ Checklist ด้านความมั่นคงปลอดภัยของ SANS ด้วย เพื่อให้ตระหนักและเลี่ยงโค้ดที่ไม่ปลอดภัย นอกจากนี้ควรใช้ไลบรารีและโค้ดจากผู้อื่นที่อัปเดตล่าสุด รวมถึงตรวจสอบโค้ดเหล่านั้นก่อนใช้งานจริง
3.) Secure Coding
แนวทางเบื้องต้นที่ควรตรวจสอบเว็ปแอปพลิเคชันที่ถูกพัฒนาขึ้นมีดังนี้
- ตรวจสอบอินพุตน์ – มีการตรวจสอบฟิลด์ข้อมูลที่เข้ามา ซึ่งบ่อยครั้งที่ฝั่งไคลเอ้นต์มักถูก Bypass ได้ง่าย ดังนั้นเซิร์ฟเวอร์ต้องออกแรงทำแทน โดยเฉพาะเรื่องปัญหา Buffer Overflow และใช้การทำ Whistlist ข้อมูลในอินพุตน์แทน Blacklist เพราะจะจำกัดได้ง่ายกว่า
- Command Injection – เลี่ยงการรันคำสั่งตรงๆ ที่รับเข้ามาเพราะอาจเป็นช่องทางให้คนร้ายเข้ามาทำ OS Command Injection ได้ แต่หากจำเป็นต้องใช้สิทธิ์ต่ำที่สุดเอาไว้
- SQL Injection – ช่องโหว่สำคัญที่มักเกิดขึ้นกับฐานข้อมูล ซึ่งแก้ไขได้ด้วยการใช้ Statement ที่เตรียมเอาไว้โดยเฉพาะอย่างรัดกุม หรือการใช้ Store Procedure ก็ช่วยได้
- อื่นๆ – XSS, Clickjacking หรือการเปิดให้อัปโหลดไฟล์ และหลีกเลี่ยงการรับ URL เป็นอินพุตน์ก็เป็นเรื่องที่ต้องใส่ใจหาทางป้องกันทั้งสิ้น
4.) เข้ารหัส
ในขณะส่งผ่านข้อมูลสำคัญต้องมีการเข้ารหัสเช่นการใช้งาน HTTPS เท่านั้น และต้องมั่นใจได้ว่าอัลกอริทึมที่เลือกใช้นั้นเป็นไปตามมาตรฐาน ทันสมัย และอย่าพัฒนาขึ้นมาเอง รวมถึงต้องตรวจสอบเรื่อง Integrity ได้ด้วยการทำ Hashing
5.) ช่วยตรวจสอบรหัสผ่านให้ผู้ใช้งาน
การบังคับตรวจสอบรหัสผ่านว่าเป็นไปตามเกณฑ์ด้านความมั่นคงปลอดภัยเช่น ยาวพอ ยากพอ จะช่วยลดความเสี่ยงเมื่อถูก Brute force attack ได้ รวมถึงการใช้ 2 factors authentication และควรต้องสามารถบล็อกความพยายามล็อกอินผิดๆ หลายครั้งติดได้ นอกจากนี้ต้องใส่ใจเรื่อง Least privilege ด้วย
6.) ใช้เครื่องมือตรวจสอบเข้าช่วย
- DevSecOps – การเพิ่มการปฏิบัติจริงทาง Security เข้ามาในขั้นตอน DevOps ในช่วงกระบวนการ Build เป็นเรื่องที่ละเลยไม่ได้
- Static application security testing (SAST) – เครื่องมือสแกนโค้ดสามารถช่วยหาช่องโหว่ในแอปพลิเคชันได้ แต่ข้อเสียคือมี False Positive เยอะหน่อย ดังนั้นต้องตรวจสอบให้ดี
- Dynamic application security testing (DAST) – เครื่องมือประเมินผลลัพธ์จากการใส่อินพุตน์แปลกๆ มากมายให้โปรแกรม
- Penetration Testing – กระบวนการทดสอบด้านความมั่นคงปลอดภัยขั้นสูง ที่อาศัยทั้งเรื่อง Dynamic Scanning และเทคนิคการโจมตีแบบ manual เพื่อจำลองเข้าถึงระบบของจริงที่อาจเกิดขึ้น
ที่มา : https://securityintelligence.com/posts/web-application-security-best-practices-developers-guide/