10 วิธีเพิ่มความปลอดภัยในการพัฒนาซอฟต์แวร์

8 mins read

Published

20 March, 2024

Language

Thai

Written by

Share

10 วิธีเพิ่มความปลอดภัยในการพัฒนาซอฟต์แวร์

ในโลกปัจจุบันมีการใช้งานซอฟต์แวร์อยู่เกือบทุกวัน หลายอุตสาหกรรมนั้นล้วนหันมาใช้งานซอฟต์แวร์เพื่อช่วยแก้ปัญหาที่พบเจอ ช่วยลดค่าใช้จ่ายแถมยังช่วยรองรับลูกค้าอีกด้วย เมื่อมีซอฟต์แวร์เกิดขึ้นมาเยอะก็ต้องมีผู้ไม่หวังดีกับระบบเกิดขึ้นมา ซึ่งอาจจะทำให้ระบบใช้งานไม่ได้ หรืออาจจะมาเพื่อเอาข้อมูลสำคัญ ในมุมมองของนักพัฒนาจะมีวิธีการใดกันบ้างเพื่อช่วยป้องกันผู้ไม่หวังดีกับระบบ วันนี้ก็จะพามาดู 10 วิธีที่ควรทำเพื่อให้ระบบนั้นมีความปลอดภัยมากยิ่งขึ้น

1. Secure Coding Practices

1. ฝึกฝนให้ทีม developer มีการเขียนโค้ดที่ปลอดภัยตามหลักการ จะช่วยการป้องกันการโจมตีจากช่องโหว่ เช่น (injection attacks, buffer overflows)

2. ปฏิบัติตามหลักเกณฑ์การเขียนโค้ดอย่างปลอดภัย

      1. ทำ input validation เสมอ อย่าใว้ใจข้อมูล input จากผู้ใช้

      2. มีการออกแบบที่เป็นเอกลักษณ์ และมีความปลอดภัยด้วย

      3. ทำให้ระบบใช้งานง่าย เป็นพื้นฐาน แต่มีประสิทธิภาพ

      4. ใช้ช่องทางการสื่อสารที่ปลอดภัย ทั้งภายในบริษัทและกับลูกค้า

      5. ตรวจสอบคุณภาพของโค้ดและปฏิบัติตาม code standards

2. Code Reviews

Credit: https://unsplash.com/photos/a-computer-screen-with-a-bunch-of-code-on-it-ieic5Tq8YMk

1. ทำการตรวจสอบโค้ดเป็นประจำโดยเน้นที่ความปลอดภัย ในทุกๆครั้งที่จะนำโค้ดไปรวมไว้ที่ส่วน Main Branch หรือ Production Branch

2. ใช้เครื่องมือ automate testing เพื่อลดเวลาที่ใช้ในการทดสอบ

3. ทุกคนในทีมควรมีการรีวิวโค้ดของคนอื่น เพื่อทำให้เข้าใจโค้ดและเป็นไปตาม code standards

3. Authentication and Authorization

1. พัฒนาระบบยืนยันตัวตนที่เข้มงวดเพื่อให้แน่ใจว่าผู้ใช้มีข้อมูลอยู่ในระบบและสามารถที่จะใช้ระบบได้

2. ใช้ระบบจำกัดสิทธิ์ในการเข้าถึง เพื่อให้ผู้ใช้สามารถเข้าไปยังเนื้อหาที่จำเป็นสำหรับผู้ใช้

4. Data Encryption

Credit: https://unsplash.com/photos/a-golden-padlock-sitting-on-top-of-a-keyboard-FnA5pAzqhMM

1. ใช้การเข้ารหัสข้อมูลทั้งขารับและขาส่ง

2. มีการจัดเก็บข้อมูล secret key ที่ปลอดภัย ซึ่งสามารถจัดเก็บผ่านผู้ให้บริการ cloud provider เช่น AWS Secrets Manager, Google cloud Secret Manager, Azure Key Vault

5. Input Validation

Credit : https://i.stack.imgur.com/0Smzi.png

1. มีการทำ validate ข้อมูลที่ผู้ใช้ทุกคนจะกรอกเข้ามาเพื่อเป็นการป้องกัน injection attacks

2. ใช้ parameterized queries เพื่อปกป้องการเกิด SQL injection

6. Error Handling:

1. พัฒนา error handling เพื่อหลีกเลี่ยงการเปิดเผยข้อมูลที่มีความอ่อนไหว หรือข้อมูลสำคัญ

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

7. Security Testing

1. ต้องมีการทดสอบระบบทุกครั้งก่อนใช้งาน และรวมถึงการทำ penetration testing และ การทำ code scanning

      1. penetration testing tools

        1. Metasploit

        2. Wireshark

        3. Burp Suite

      2. code scanning

        1. Nikto

        2. SonarQube

        3. Veracode

8. Dependency Management

1. ให้ทำการอัพเดตเวอร์ชั้นของ library component หรือ tools ที่ใช้ในการพัฒนาอยู่เสมอ

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

 

 

9. Incident Response Planning

Credit : https://unsplash.com/photos/man-in-white-long-sleeve-shirt-writing-on-white-board-um1zVjVCtEY

1. มีการวางแผนรับมือเหตุการณ์ที่อาจจะเกิดขึ้นกับระบบ และใช้แผนการนั้นรับมือหากเกิดสถานการณ์นั้น

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

10. Software Development Lifecycle (SDLC) 

Credit : https://i0.wp.com/melsatar.blog/wp-content/uploads/2012/03/sdlc.png?fit=830%2C374&ssl=1

SDLC เป็นกระบวนการพัฒนาซอฟต์แวร์ที่มุ่งเน้นให้ในส่วนที่สำคัญไม่แพ้จากการพัฒนาหรือเก็บ requirements นั้นก็คือ security โดยในทุกๆขั้นตอนของการพัฒนาซอฟต์แวร์จะใส่ security ไปด้วย ซึ่งการใส่ security ไปนั้นก็จะช่วยให้ทุกๆขั้นตอนมีความปลอดภัยมากยิ่งขึ้นลดช่องโหว่ และ ลดการมาปรับแก้โค้ดเรื่องความปลอดภัยพร้อมในการส่งมอบไปยังลูกค้า

  1. เพิ่มการป้องกันความปลอดภัยไปทุกๆรอบของการพัฒนาซอฟต์แวร์ และปรับปรุงให้เหมาะสมกับ development framework ที่ใช้งาน

  2. วางแผนการทำงานล่วงหน้าของระบบ เพื่อป้องกันความเสี่ยงที่อาจจะเกิดขึ้นในระหว่างการพัฒนาซอฟต์แวร์

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

Written by
default user avatar
Senna Labs

Share

Keep me posted
to follow product news, latest in technology, solutions, and updates

More than 120,000 people/day  visit to read our blogs

Contact Senna Labs at :

hello@sennalabs.com28/11 Soi Ruamrudee, Lumphini, Pathumwan, Bangkok 10330+66 62 389 4599
© 2022 Senna Labs Co., Ltd.All rights reserved. | Privacy policy