Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon อะไรคือข้อผิดพลาดด้านความปลอดภัยที่พบบ่อยเมื่อใช้ whenloaded () ใน graphql


อะไรคือข้อผิดพลาดด้านความปลอดภัยที่พบบ่อยเมื่อใช้ whenloaded () ใน graphql


เมื่อใช้ `whenloaded ()` ใน graphql ซึ่งโดยทั่วไปเป็นวิธีการโหลดข้อมูลหรือการเชื่อมโยงที่เกี่ยวข้องอย่างมีเงื่อนไข (เช่นในตัวแก้ไข GraphQL ที่ใช้ ORM) ข้อผิดพลาดเหล่านี้ส่วนใหญ่เกี่ยวข้องกับปัญหาการรักษาความปลอดภัย GraphQL ที่กว้างขึ้น แต่มีความเกี่ยวข้องโดยเฉพาะอย่างยิ่งเนื่องจาก `` `whenloaded ()` มักจะเกี่ยวข้องกับการดึงข้อมูลที่ซ้อนกันหรือเกี่ยวข้องเพิ่มเติมเพิ่มความซับซ้อนและความเสี่ยง

ข้อผิดพลาดด้านความปลอดภัยทั่วไปที่มี `whenloaded ()` ใน graphql

** 1. การตรวจสอบการอนุญาตที่ไม่สอดคล้องหรือขาดหายไป
`เมื่อโหลด ()` มักจะกระตุ้นการโหลดข้อมูลซ้อนหรือที่เกี่ยวข้องหลังจากการแก้ไขเริ่มต้นทำงาน หากตรรกะการอนุญาตไม่ได้ใช้อย่างสม่ำเสมอในทุกจุดแก้ไขหรือการโหลดข้อมูล (รวมถึงที่ถูกกระตุ้นโดย `เมื่อโหลด ()`) ผู้ใช้ที่ไม่ได้รับอนุญาตอาจเข้าถึงข้อมูลที่ละเอียดอ่อน นี่เป็นปัญหาทั่วไปที่บางเส้นทางไปยังข้อมูลเดียวกันได้รับการคุ้มครอง แต่อื่น ๆ (เช่นผ่านทาง `whenloaded ()`) ไม่ได้ช่วยให้ผู้โจมตีสามารถข้ามการควบคุมการเข้าถึง [4] [6] การอนุญาตจะต้องมีการบังคับใช้ทั้งในระดับสอบถามและภายในตัวแก้ไขที่ซ้อนกันหรือตัวโหลดข้อมูลทั้งหมด

** 2. การค้นหามากเกินไปและซับซ้อนที่นำไปสู่การปฏิเสธการบริการ (DOS)
การใช้ `whenloaded ()` สามารถทำให้เกิดการสืบค้นที่ซ้อนกันอย่างลึกซึ้งซึ่งดึงข้อมูลที่เกี่ยวข้องจำนวนมาก ผู้โจมตีสามารถใช้ประโยชน์จากสิ่งนี้ได้โดยการสร้างแบบสอบถามที่ทำให้เกิดการโหลดและการประมวลผลข้อมูลมากเกินไปซึ่งนำไปสู่การอ่อนเพลียของทรัพยากรและ DOS ความสามารถของ GraphQl ในการดึงวัตถุที่เกี่ยวข้องหลายอย่างในแบบสอบถามเดียวทำให้การทำนายการใช้ทรัพยากรและ `` เมื่อ () `สามารถทำให้รุนแรงขึ้นได้โดยการโหลดข้อมูลเพิ่มเติมอย่างมีเงื่อนไข [4] [5] การบรรเทารวมถึงการ จำกัด ความลึกของการสืบค้นการให้คะแนนความซับซ้อนและการ จำกัด อัตรา

** 3. การเปิดรับข้อมูลที่ละเอียดอ่อนผ่านการเลือกสนามที่ไม่เหมาะสม
หาก `เมื่อ loaded ()` โหลดข้อมูลที่เกี่ยวข้องโดยไม่ต้องควบคุมอย่างระมัดระวังว่าฟิลด์ใดที่ถูกเปิดเผยข้อมูลที่ละเอียดอ่อนเช่นรหัสผ่านโทเค็นหรือรายละเอียดผู้ใช้ส่วนตัวอาจถูกส่งคืนโดยไม่ตั้งใจในการตอบกลับ GraphQL [5] ความเสี่ยงนี้เพิ่มขึ้นหากการตรวจสอบการอนุญาตหายไปหรือหากข้อความแสดงข้อผิดพลาดรั่วไหลข้อมูลที่อ่อนไหว นักพัฒนาต้องตรวจสอบให้แน่ใจว่าไม่เคยเปิดเผยฟิลด์ที่ละเอียดอ่อนแม้ว่าจะโหลดข้อมูลซ้อนกันก็ตาม

** 4. การโจมตีแบบฉีดผ่านการตรวจสอบอินพุตที่ไม่เหมาะสม
เมื่อ `` whenloaded () `ใช้กับอาร์กิวเมนต์หรือตัวกรองแบบไดนามิกการตรวจสอบความถูกต้องของอินพุตที่ไม่เหมาะสมสามารถนำไปสู่ช่องโหว่การฉีดเช่นการฉีดแบบสอบถาม graphQL หรือแม้แต่การฉีด SQL หากการดึงข้อมูลพื้นฐานไม่ได้รับการพารามิเตอร์อย่างเหมาะสม [6] ผู้โจมตีอาจฉีดคำสั่งหรือคำสั่งที่เป็นอันตรายที่จัดการกับตรรกะการดึงข้อมูล การตรวจสอบความถูกต้องของอินพุตที่เหมาะสมและการใช้แบบสอบถามพารามิเตอร์เป็นสิ่งจำเป็น

** 5. การหลีกเลี่ยงการ จำกัด อัตราและการป้องกันกำลังดุร้าย
เนื่องจาก `` whenloaded () `สามารถทำให้ข้อมูลที่ซ้อนกันหลายรายการดึงข้อมูลภายในแบบสอบถามเดียวผู้โจมตีจึงสามารถใช้ประโยชน์จากสิ่งนี้เพื่อข้ามการ จำกัด อัตราดั้งเดิม ตัวอย่างเช่นพวกเขาอาจส่งแบบสอบถามที่ซับซ้อนเพียงครั้งเดียวที่ทำให้เกิดการดึงข้อมูลหรือการกลายพันธุ์จำนวนมากโดยใช้กำลังเดรัจฉานหรือการโจมตีการแจงนับอย่างมีประสิทธิภาพโดยไม่ต้องเรียกใช้ข้อ จำกัด ต่อข้อร้องเรียน [4] [7] กลยุทธ์การ จำกัด อัตราจะต้องพิจารณาความซับซ้อนของการสืบค้นและการดำเนินการซ้อน

** 6. พื้นผิวการโจมตีเพิ่มขึ้นเนื่องจากการวิปัสสนาสคีมาและเครื่องมือ
การใช้ `` whenloaded () `มักจะสะท้อนถึงสคีมาที่ซับซ้อนที่มีความสัมพันธ์ที่ซ้อนกันหลาย ผู้โจมตีสามารถใช้การวิปัสสนา graphQL และเครื่องมือเช่น graphiql เพื่อค้นหาความสัมพันธ์และการค้นหางานฝีมือเหล่านี้ที่ใช้ประโยชน์จาก `` เมื่อโหลด () `เพื่อเข้าถึงข้อมูลที่ไม่ได้ตั้งใจ [1] [8] การปิดใช้งานการวิปัสสนาในการผลิตหรือ จำกัด ให้กับผู้ใช้ที่ได้รับอนุญาตสามารถลดความเสี่ยงนี้ได้

สรุป

ข้อผิดพลาดด้านความปลอดภัยที่สำคัญเมื่อใช้ `whenloaded ()` ใน graphql หมุนรอบ:

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

การบรรเทารวมถึงการตรวจสอบการอนุญาตอย่างเข้มงวดในทุกตัวแก้ไขความซับซ้อนของการสืบค้นและการจำกัดความลึกการตรวจสอบอินพุตอย่างเข้มงวดการออกแบบสคีมาอย่างระมัดระวังการปิดใช้งานการวิปัสสนาในการผลิตและการ จำกัด อัตราที่ครอบคลุมเหมาะสำหรับโครงสร้างการสืบค้น GraphQL [3] [4] [5] [6] [8]

การอ้างอิง:
[1] https://portswigger.net/web-security/graphql
[2] https://www.imperva.com/blog/graphql-vulnerabilitial-common-attacks/
[3] https://tyk.io/blog/graphql-security-7-common-vulnerabilitial-and-how-to-mitigate-the-risks/
[4] https://www.brightsec.com/blog/graphql-security/
[5] https://blog.convisoappsec.com/en/security-in-graphql/
[6] https://wundergraph.com/blog/the_complete_graphql_security_guide_fixing_the_13_most_common_graphql_vulnerabilitive_to_make_your_api_production_rade
[7] https://beaglesecurity.com/blog/article/graphql-attacks-vulnerabilitial.html
[8] https://www.fastly.com/blog/exploring-the-security-plications-of-graphql