เทคนิคการตรวจสอบโค้ดอย่างปลอดภัย
ระบุปัญหาด้านความปลอดภัยในการตรวจสอบโค้ด ได้แก่ กระแสข้อมูล ขอบเขตความน่าเชื่อถือ API อันตราย และการควบคุมที่ขาดหายไป
เทคนิคการตรวจสอบโค้ดอย่างปลอดภัย เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
เป้าหมายของการตรวจสอบรหัสอย่างปลอดภัย
การตรวจสอบรหัสอย่างปลอดภัยช่วยระบุช่องโหว่ด้านความปลอดภัยในรหัสต้นฉบับก่อนนำไปใช้งาน ต่างจากการตรวจสอบรหัสด้านการทำงาน เพราะมุ่งเน้นขอบเขตความไว้วางใจ การไหลของข้อมูล ส่วนต่อประสานที่เป็นอันตราย มาตรการควบคุมที่ขาดหาย และข้อผิดพลาดในตรรกะด้านความปลอดภัย ไม่ใช่ความถูกต้องหรือรูปแบบการเขียน
การตรวจสอบด้วยคนเทียบกับการตรวจสอบอัตโนมัติ
เครื่องมือ SAST แบบอัตโนมัติ เช่น Semgrep, SonarQube และ CodeQL ตรวจจับรูปแบบที่ทราบได้อย่างรวดเร็ว แต่พลาดข้อบกพร่องในตรรกะทางธุรกิจ ช่องโหว่ที่ซับซ้อนระหว่างหลายส่วนประกอบ และปัญหาที่ขึ้นอยู่กับบริบท การตรวจสอบด้วยคนช่วยค้นหาสิ่งที่ระบบอัตโนมัติพลาด ดังนั้นจึงจำเป็นต้องใช้ทั้งสองวิธี
การวิเคราะห์จุดรับข้อมูล
เริ่มการตรวจสอบความปลอดภัยด้วยการทำแผนผังจุดรับข้อมูลทั้งหมด ได้แก่ จุดปลายทางของคำขอ HTTP ตัวจัดการคิวข้อความ การอัปโหลดไฟล์ งานตามกำหนดเวลา เว็บฮุก และอาร์กิวเมนต์ CLI จุดรับข้อมูลแต่ละจุดที่รับข้อมูลจากภายนอกอาจเป็นจุดฉีดข้อมูล จึงต้องได้รับการตรวจสอบอย่างละเอียด
การติดตามการไหลของข้อมูล
ติดตามข้อมูลที่ผู้ใช้ควบคุมตั้งแต่จุดรับข้อมูล ผ่านแอปพลิเคชันไปจนถึงการใช้งานขั้นสุดท้าย ข้อมูลไปถึงคำสั่งในฐานข้อมูลหรือไม่ ไปถึงคำสั่งเชลล์หรือไม่ ไปถึงแม่แบบ HTML หรือไม่ หรือไปถึงการเรียกใช้ส่วนติดต่อโปรแกรมประยุกต์หรือไม่ ให้ติดตามการไหลของข้อมูลและตรวจสอบการแปลงรวมถึงทุกขั้นตอนการทำให้ข้อมูลปลอดภัย
การวิเคราะห์ขอบเขตความไว้วางใจ
การตัดสินใจด้านความปลอดภัยเกิดขึ้นที่ขอบเขตความไว้วางใจ ซึ่งเป็นจุดที่ข้อมูลเคลื่อนจากบริบทที่ได้รับความไว้วางใจน้อยกว่า เช่น คำขอ HTTP ไปยังบริบทที่ได้รับความไว้วางใจมากกว่า เช่น ฐานข้อมูลหรือ OS การข้ามขอบเขตความไว้วางใจทุกครั้งต้องตรวจสอบความถูกต้อง ทำให้ข้อมูลปลอดภัย หรืออนุญาตข้อมูลนั้น
รายการตรวจสอบส่วนต่อประสานที่เป็นอันตราย
ให้ตั้งข้อสังเกตการใช้งาน eval(), exec(), system(), shell_exec(), innerHTML, dangerouslySetInnerHTML, deserialize(), pickle.loads(), Runtime.exec(), ProcessBuilder ตัวแยกวิเคราะห์ XML ที่ไม่ได้ปิดการขยายเอนทิตี และองค์ประกอบพื้นฐานด้านการเข้ารหัสที่นำมาใช้โดยตรงแทนส่วนต่อประสานระดับสูง
การทบทวนการตรวจสอบสิทธิ์และการอนุญาต
ตรวจสอบว่า จุดปลายทางที่มีข้อมูลอ่อนไหวทุกจุดได้รับการป้องกันด้วยการตรวจสอบสิทธิ์หรือไม่ ตรวจสอบการอนุญาตจากฝั่งเซิร์ฟเวอร์สำหรับทุกการกระทำหรือไม่ ผู้ใช้สามารถเข้าถึงข้อมูลของผู้ใช้อื่นได้ด้วยการเปลี่ยนพารามิเตอร์ ID หรือไม่ (IDOR) และการดำเนินการที่มีข้อมูลอ่อนไหวได้รับการป้องกันจาก CSRF หรือไม่
การทบทวนการจัดการข้อผิดพลาด
มองหาบล็อก catch ที่กลืนข้อยกเว้นโดยไม่แจ้งให้ทราบ ตรวจสอบว่าข้อความข้อผิดพลาดที่แสดงต่อผู้ใช้ไม่เปิดเผยเส้นทางภายใน ร่องรอยสแต็ก หรือโครงสร้างฐานข้อมูล ตรวจสอบว่าข้อยกเว้นด้านความปลอดภัย เช่น AuthenticationException ได้รับการบันทึกและไม่ถูกเพิกเฉยอย่างเงียบ ๆ
การทบทวนการเข้ารหัส
ให้ตั้งข้อสังเกตการใช้ MD5 หรือ SHA-1 สำหรับการแฮชรหัสผ่าน ซึ่งควรใช้ bcrypt หรือ Argon2 แทน การใช้คีย์สมมาตรหรือเวกเตอร์เริ่มต้นที่ฝังตายตัว การเข้ารหัสในโหมด ECB ซึ่งควรใช้ GCM หรือ CBC ร่วมกับ HMAC การนำการเข้ารหัสที่สร้างขึ้นเองมาใช้ และตัวสร้างตัวเลขสุ่มที่ไม่ปลอดภัยตามหลักการเข้ารหัส
การทบทวนการพึ่งพาและการกำหนดค่า
ตรวจสอบ package.json/pom.xml เพื่อค้นหาการพึ่งพาที่ล้าสมัย ตรวจสอบการกำหนดค่าแอปพลิเคชันว่ามีการเปิดใช้โหมดแก้ไขข้อบกพร่องในระบบจริงหรือไม่ มีหน้าข้อผิดพลาดที่แสดงรายละเอียดมากเกินไปหรือไม่ มีข้อมูลรับรองผู้ดูแลระบบในไฟล์การกำหนดค่าหรือไม่ และมีส่วนหัวด้านความปลอดภัยที่ขาดหายไปหรือไม่ เช่น HSTS, CSP และ X-Frame-Options
เครื่องมือ: Semgrep และ CodeQL
กฎของ Semgrep จับคู่รูปแบบไวยากรณ์โดยตระหนักถึงความหมาย ควรเขียนกฎแบบกำหนดเองสำหรับรูปแบบเฉพาะของฐานรหัสของคุณ CodeQL มองรหัสเป็นข้อมูล ให้เขียนคำค้นเหนือ AST เพื่อค้นหาการไหลของข้อมูลจากแหล่งที่มาไปยังจุดปลายทางข้ามไฟล์และการเรียกใช้ฟังก์ชัน
การทดสอบความรู้
ช่องโหว่ IDOR คืออะไร และคุณจะมองหาช่องโหว่นี้ที่ใดในการตรวจสอบรหัส
สรุป
การตรวจสอบรหัสอย่างปลอดภัยที่มีประสิทธิผลผสานการทำแผนผังจุดรับข้อมูล การติดตามการไหลของข้อมูล การวิเคราะห์ขอบเขตความไว้วางใจ การตรวจจับส่วนต่อประสานที่เป็นอันตราย และเครื่องมือ SAST แบบอัตโนมัติ วิธีนี้ช่วยตรวจพบปัญหาด้านความปลอดภัยที่การตรวจสอบด้านการทำงานพลาด โดยเฉพาะข้อบกพร่องในตรรกะทางธุรกิจและช่องโหว่เล็กน้อยในการอนุญาต
คำถามที่พบบ่อย
บทเรียน “เทคนิคการตรวจสอบโค้ดอย่างปลอดภัย” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เทคนิคการตรวจสอบโค้ดอย่างปลอดภัย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “เทคนิคการตรวจสอบโค้ดอย่างปลอดภัย”
ระบุปัญหาด้านความปลอดภัยในการตรวจสอบโค้ด ได้แก่ กระแสข้อมูล ขอบเขตความน่าเชื่อถือ API อันตราย และการควบคุมที่ขาดหายไป คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “เทคนิคการตรวจสอบโค้ดอย่างปลอดภัย” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม
ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การตรวจสอบข้อมูลป้อนเข้าและการเข้ารหัสข้อมูลส่งออก
- การจัดการส่วนพึ่งพาอย่างปลอดภัย
- OWASP ASVS: มาตรฐานตรวจสอบความปลอดภัยแอปพลิเคชัน
- เทคนิคการตรวจสอบโค้ดอย่างปลอดภัย