ข้ามไปเนื้อหาหลัก

สร้างสแกนเนอร์ตรวจสอบ ERC-20 Allowance อัตโนมัติด้วย Python

ปกป้องกระเป๋าเงินคริปโตของคุณจากการอนุมัติสิทธิ์ที่ไม่ปลอดภัยบนสมาร์ทคอนแทรคด้วยการเขียนสคริปต์ Python และ Web3.py

เรียบเรียงโดย AI
Inewgen
28 Jul 2026ที่มา: Dev.to3 นาทีอ่าน (0 ครั้ง)อัปเดตล่าสุด 01 Aug 2026
แชร์
สร้างสแกนเนอร์ตรวจสอบ ERC-20 Allowance อัตโนมัติด้วย Python

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • การให้สิทธิ์ Token Allowances สะสมเรื่อยๆ กลายเป็นช่องโหว่เงียบในกระเป๋าเงินคริปโต
  • สร้างสแกนเนอร์ตรวจจับความเสี่ยงด้วย Python และ Web3.py ตรวจสอบแอดเดรสของคุณ
  • จำแนกความเสี่ยงตามวงเงินอนุมัติและสถานะของ Spender ว่าเป็นสัญญาอัจฉริยะหรือไม่
  • สร้างธุรกรรมเพื่อเพิกถอน (Revoke) สิทธิ์ความเสี่ยงสูงได้ทันที

ทุกครั้งที่คุณทำธุรกรรมสวอปโทเค็นบน Uniswap หรือฝากสินทรัพย์เข้าสู่โปรโตคอล DeFi คุณมักจะต้องให้สิทธิ์การใช้งานที่เรียกว่า ERC-20 token allowances ซึ่งเป็นการอนุญาตให้สมาร์ทคอนแทรคสามารถใช้จ่ายโทเค็นในกระเป๋าของคุณได้ ผู้ใช้งานส่วนใหญ่มักสะสมการให้สิทธิ์เหล่านี้ไว้จำนวนมากโดยไม่รู้ตัว หลายรายการกำหนดวงเงินไว้แบบไม่จำกัด (Unlimited amounts) ซึ่งกลายเป็นพื้นที่โจมตีแบบเงียบๆ หากสมาร์ทคอนแทรคตัวนั้นถูกแฮกหรือถูกเจาะระบบ ผู้โจมตีจะสามารถสูบสินทรัพย์ออกจากกระเป๋าของคุณได้ทันทีโดยไม่ต้องใช้ private key ของคุณเลย

ในบทความนี้ เราจะมาสร้างระบบสแกนตรวจสอบสิทธิ์อัตโนมัติด้วยภาษา Python และ Web3.py ซึ่งจะทำหน้าที่ตรวจสอบประวัติการอนุมัติทั้งหมดในแอดเดรสของคุณ ชี้เป้ารายการที่มีความเสี่ยง และสร้างธุรกรรมเพื่อเพิกถอนสิทธิ์เหล่านั้นออกไป เริ่มต้นด้วยการติดตั้งไลบรารีที่จำเป็นผ่านคำสั่ง pip install web3 requests eth-account จากนั้นเข้าสู่ขั้นตอนการดึงข้อมูลเหตุการณ์การอนุมัติ (Approval events) ผ่านทาง Etherscan API สำหรับโทเค็น ERC-20 ทั้งหมด

python developer workspace code editor

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขั้นตอนสำคัญต่อมาคือการจำแนกประเภทความเสี่ยงของสิทธิ์แต่ละรายการ โดยใช้ฟังก์ชัน classify_allowance ในการตรวจสอบ ซึ่งจะใช้ค่า MAX_UINT256 เป็นเกณฑ์ หากวงเงินอนุมัติเท่ากับค่านี้ ระบบจะระบุระดับความเสี่ยงเป็น high พร้อมให้เหตุผลว่า Unlimited approval นอกจากนี้ยังตรวจสอบว่า Spender เป็นสมาร์ทคอนแทรคที่ได้รับการตรวจสอบแล้วหรือไม่ หากโค้ดของ Spender เป็นค่าว่าง (EOA หรือบัญชีผู้ใช้ทั่วไปไม่ใช่คอนแทรค) ระบบจะยกระดับความเสี่ยงเป็น critical ทันที พร้อมแปลงหน่วยตัวเลขให้มนุษย์อ่านเข้าใจง่ายหรือแสดงผลเป็นเครื่องหมายอินฟินิตี้สำหรับวงเงินไม่จำกัด

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

เมื่อเราสามารถระบุรายการอนุมัติที่มีความเสี่ยงได้แล้ว ขั้นตอนถัดไปคือการสร้างฟังก์ชันเพิกถอน (Revoke Function) เพื่อส่งคำสั่งบล็อกหรือยกเลิกสิทธิ์การเข้าถึงเหล่านั้น โค้ดต้นฉบับทั้งหมดเปิดให้ใช้งานบน GitHub ของ Byaigo โดยคุณสามารถโคลนโปรเจกต์มาลองรันสแกนเนอร์กับแอดเดรสของคุณเองเพื่อตรวจสอบสิทธิ์ที่คุณเคยให้ไว้ตลอดหลายปีที่ผ่านมา ซึ่งคุณอาจจะต้องประหลาดใจกับสิ่งที่พบเจอ

ที่มา: Dev.to

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้