เมื่อวันพฤหัสบดีที่ผ่านมา (27 ตุลาคม 2559) ผมได้ไปร่วมงานสัมนาของ OWASP Thailand ในหัวข้อ A8 Cross-Site Request Forgery (CSRF) ที่สำนักงานคณะกรรมการกำกับหลักทรัพย์และตลาดหลักทรัพย์ (ก.ล.ต.) ภายในงานมีเลี้ยงขนมจีบกุ้งกับกาแฟในระหว่างรอฟังบรรยาย
ปัจจุบันนี้ผู้ใช้งานเว็บแอปพลิเคชันมักจะ Log in ค้างไว้และไม่ยอม Log out ออก (เช่นเว็บไซต์ที่เพื่อน ๆ ทุกคนน่าจะเข้าเป็นประจำอย่าง Facebook.com) โดยเว็บไซต์จะมีหลักการทำงานดังนี้ เมื่อ Log in แล้วเว็บไซต์ก็จะจดจำว่าผู้ใช้งานอยู่ในระบบ ซึ่งผู้ใช้งานจะสามารถใช้งานฟังก์ชันต่าง ๆ ภายในเว็บไซต์ได้ เช่น โพสสถานะ เพิ่มเพื่อน หรือแม้กระทั่งลบแอคเคาท์ โดยผู้ใช้บริการเว็บไซต์จะใช้งานฟังก์ชันเดียวกันทุกคน ต่างกันที่ฟังก์ชันนั้น ๆ จะทำงานอยู่ภายใต้ข้อมูลของตัวเอง เช่น ฟังก์ชันโพสสถานะ ทุกคนใช้งานฟังก์ชันนี้เหมือนกันหมด แต่ตัวเว็บไซต์จะอ่านข้อมูลของผู้ใช้คนนั้น ๆ ที่ Log in อยู่ เพื่อแยกแยะว่าใครเป็นคนโพสสถานะ เป็นต้น
จากหลักการทำงานนี้ถ้าเพื่อน ๆ ยัง Log in อยู่ในระบบ แล้วเผลอไปคลิก Link จากเว็บไซต์แปลก ๆ ที่ส่ง Request ไปยังเว็บไซต์ให้ลบแอคเคาท์ของตัวเอง และเว็บไซต์นั้น ๆ ไม่ได้มีการตรวจสอบ Request ที่ดีพอ ผลที่ได้คือแอคเคาท์ของเพื่อน ๆ ก็จะถูกลบออกจากระบบโดยที่เพื่อน ๆ ไม่ได้ต้องการ หรือในตัวอย่างที่เลวร้ายกว่านี้ ถ้าเพื่อน ๆ ทำธุรกรรมผ่าน Internet Banking และไม่ได้ Log out จากระบบ แล้วไปคลิก Link ไม่น่าไว้ใจที่แอบแฝง Request โอนเงินไปให้แฮกเกอร์ เพื่อน ๆ ก็จะสูญเสียเงินทันที .....ซึ่งการป้องกันแบ่งออกได้เป็น 2 ส่วน
- ส่วนของผู้ใช้งาน: ให้ทำการ Log out ออกจากระบบหลังจากเลิกใช้งานเว็บไซต์ต่าง ๆ และไม่ไปคลิก Link แปลก ๆ ที่ไม่น่าไว้ใจ
- ส่วนของนักพัฒนา: ควรมีการสร้าง key เฉพาะและแนบไปกับ Link ทุกครั้ง เมื่อมี Request เข้ามาให้ทำการเช็ค key เฉพาะว่าตรงกับที่ระบบสร้างไว้หรือเปล่า ถ้าไม่ตรงก็ไม่ควรรับ Request นั้น ๆ
หลังจากจบการบรรยาย ก็มีการแจ้งงานสัมนาใหญ่ปลายปี ซึ่งก็คืองาน OWASP Day 2016 - Let's secure!! ซึ่งจัดในวันศุกร์ที่ 11 พฤศจิกายน 2559 เวลา 08:30 - 17:00 น. ณ โรงแรมเจ้าพระยาปาร์ค รัชดา.....สำหรับอันดับอื่น ๆ ของ OWASP Top 10 ปี 2013 เพื่อน ๆ สามารถอ่านเพิ่มเติมได้ ที่นี่ เลยครับ
0 comments:
แสดงความคิดเห็น