Blinder - เครื่องมือ CLI ที่ช่วยปกปิดซีเคร็ตของโปรเจกต์สำหรับ AI Agent
(github.com/YellowC-137)สวัสดีครับ
ทุกครั้งที่ต้องส่งโปรเจกต์ให้ AI Agent แล้วต้องมานั่งลบข้อมูลสำคัญทีละรายการด้วยตัวเอง มันยุ่งยากเกินไป ผมเลยลองสร้างเครื่องมืออัตโนมัติที่ช่วยปกปิดข้อมูลได้ด้วยคำสั่งเดียวขึ้นมาเอง
ก่อนจะส่งโปรเจกต์เดิมให้ AI Agent เครื่องมือนี้จะช่วยป้องกันล่วงหน้าไม่ให้ API key, ข้อมูลรับรอง, ใบรับรอง และข้อมูลลับอื่น ๆ ที่ hardcode อยู่ในซอร์สโค้ดรั่วไหลออกไปภายนอก
-
สตริงต้องสงสัยที่ค้นพบด้วย regex จะถูกตรวจสอบซ้ำรอบที่สองผ่านการวิเคราะห์ไวยากรณ์ ว่าอยู่ภายใน "string literal" ของโค้ดจริงหรือไม่
-
ไม่ใช่แค่การ mask แบบง่าย ๆ แต่เป็นการแปลงโค้ดอัตโนมัติ (Auto-fix)
ย้ายซีเคร็ตที่ hardcode ไว้ไปเก็บในไฟล์.envแล้วแทนที่ในซอร์สโค้ดให้โดยอัตโนมัติตามแต่ละภาษา เช่นprocess.env.API_KEY,System.getenv(),@Valueเป็นต้น -
การจัดการไฟล์แบบปรับให้เหมาะกับแต่ละแพลตฟอร์ม:
ไม่ใช่แค่ซอร์สโค้ดทั่วไปเท่านั้น แต่ยังพยายามแยกซีเคร็ตในไฟล์ build/setting อย่างแม่นยำผ่าน parser เฉพาะของแต่ละประเภทด้วย เช่นInfo.plistของ iOS,build.gradleของ Android,pubspec.yamlของ Flutter,application.ymlของ Spring เป็นต้น
ฟังก์ชันหลักมีดังนี้
แยกซีเคร็ตอย่างคีย์หรือ URL ที่ hardcode ไว้ไปไว้ใน .env และแปลงโค้ดให้อัตโนมัติ
blinder blind
- String apiKey = "sk_live_abc123..." # Before
+ String apiKey = BuildConfig.STRIPE_KEY # After (빌드 가능)
สร้างโปรเจกต์แบบ read only สำหรับ AI Agent
blinder mask
- apiKey: "AIzaSy9xK2mP3rT..." # Before
+ apiKey: "__BLINDER_VAR__FIREBASE_API_KEY" # After (빌드 불가)
มีให้ใช้งาน
สามารถติดตั้งแบบ global ในสภาพแวดล้อม Node.js แล้วทดลองใช้งานได้ทันที
Bash
npm install -g github:YellowC-137/Blinder
ขณะนี้รองรับสภาพแวดล้อม iOS, Android, Flutter, Node.js, React, Spring Boot และ Ruby และกำลังเพิ่มแพลตฟอร์มอย่างต่อเนื่อง
เนื่องจากยังเป็นโอเพนซอร์สในระยะเริ่มต้น จึงอาจยังมีจุดที่ไม่สมบูรณ์อยู่บ้าง
ยินดีรับฟีดแบ็กจากทุกท่านครับ ขอบคุณมาก!
GitHub Repo: https://github.com/YellowC-137/Blinder
ยังไม่มีความคิดเห็น