1. API ในการระบุตัวตนของเบราว์เซอร์คืออะไร
ในการระบุตัวตนของเบราว์เซอร์ “API” หมายถึงชุดของอินเทอร์เฟซ JavaScript และผลลัพธ์ของเมธอด ซึ่งสามารถเชื่อมโยงได้อย่างเป็นเอกลักษณ์กับเบราว์เซอร์, เวอร์ชัน, ส่วนขยาย, ข้อจำกัดที่แตกต่างกัน หรือแม้แต่พฤติกรรมเฉพาะของระบบ
ตัวอย่างเช่น:
navigator.mediaDevices
navigator.getBattery()
window.RTCPeerConnection
CanvasRenderingContext2D
WebGLRenderingContext
AudioContext
API เหล่านี้เปิดเผย:
- ความสามารถที่รองรับ
- คุณสมบัติที่มีอยู่
- ไม่ว่าจะถูกเปิดใช้งานหรือเปลี่ยนแปลง
- ค่าที่ส่งกลับมาซึ่งเป็นไปตามที่กำหนดแต่มีความละเอียดอ่อน — ซึ่งทำให้สามารถนำไปใช้ในการ ระบุตัวตนของเบราว์เซอร์ ได้
กลยุทธ์การระบุตัวตนด้วย API มักจะเชื่อมช่องว่างระหว่างการตรวจจับฮาร์ดแวร์และสภาพแวดล้อมซอฟต์แวร์ โดยเฉพาะอย่างยิ่งในเครื่องมือยูทิลิตีของเว็บไซต์ เช่น fingerprintjs.com, แพลตฟอร์มโฆษณาหลัก หรือเครื่องมือป้องกันการดึงข้อมูลที่ใช้การตรวจสอบภายใน JS API เพื่อตรวจจับระบบอัตโนมัติและการปลอมแปลง
2. แพลตฟอร์มตรวจจับ API Fingerprint อย่างไร
API แต่ละตัวไม่ได้เพียงแค่เปิดเผยชุดคุณสมบัติในระดับพื้นผิวเท่านั้น แต่ยังรวมถึงผลลัพธ์การดำเนินการภายในหรือการติดตาม toString()
ด้วย วิธีการที่ได้รับความนิยมมากที่สุดบางส่วนที่ใช้ในการตรวจจับ API fingerprint ได้แก่:
- การตรวจจับการแทนที่ฟังก์ชัน: เบราว์เซอร์จริงจะส่งคืนฟังก์ชันดั้งเดิม เช่น
CanvasRenderingContext2D.prototype.fillText.toString()
เป็น'[native code]'
เครื่องมือที่ตรวจจับเมธอดที่ถูกแทนที่อาจติดธง API ที่ถูกปลอมแปลงหรือปกปิดไว้ - การกำหนดรูปแบบตายตัวของ DOM API: การตอบสนองของ API เช่น
navigator.userAgent
หรือwindow.chrome
อาจถูกตรวจสอบหารูปแบบที่คาดหวัง — แม้จะข้ามแพลตฟอร์มหรือบริบทก็ตาม - การทำแผนที่การเข้าถึง API: แพลตฟอร์มจะตรวจสอบว่า API ใดบ้างที่สามารถเข้าถึงได้, ไม่เป็นค่าว่าง, หรือส่งคืนข้อมูลที่แคชไว้/เฉพาะระบบ เพื่อสร้าง “แบบจำลองพฤติกรรมเบราว์เซอร์ที่เป็นบรรทัดฐาน”
- การสะท้อนพฤติกรรมของระบบ:
AudioContext.sampleRate
อาจสะท้อนความสามารถในการส่งออกเสียงจริงwindow.devicePixelRatio
อาจตรวจสอบข้ามกับการปลอมแปลงที่เกี่ยวข้องกับการแสดงผล/วิวพอร์ต
- ลายเซ็นอินสแตนซ์ API: แต่ละอินสแตนซ์ของ API (เช่น
new AudioContext()
) อาจสร้างความสุ่มที่ละเอียดอ่อนหรือบริบทที่มีโครงสร้างเฉพาะตัวซึ่งถูกนำไปใช้ในการระบุตัวตน
เว็บไซต์สามารถสร้างแบบจำลองการระบุตัวตนที่มีประสิทธิภาพสูงได้โดยการรวมผลลัพธ์จากการเรียกใช้ API หลายครั้งเพื่อเสริมสร้างความมั่นใจในตัวตนของผู้ใช้ โดยเฉพาะอย่างยิ่งในสถานการณ์ต่างๆ เช่น การโฆษณาแบบโปรแกรม, การยืนยัน KYC และความปลอดภัยของ SaaS
3. FlashID ปกปิด API Fingerprint อย่างไร
FlashID เข้ามาแทรกแซงในเลเยอร์พื้นผิวของ JavaScript API ซึ่งไม่เพียงแต่ช่วยให้ปลอมแปลงค่าได้เท่านั้น แต่ยังรวมถึงโครงสร้างเชิงความหมายทั้งหมดของพฤติกรรม API ที่เบราว์เซอร์เปิดเผยด้วย
การปกปิด API ของ FlashID ประกอบด้วย:
- การจำลองโค้ดดั้งเดิม:
- มันจะแทนที่ฟังก์ชันที่ถูกแทนที่ เช่น
fillText
หรือgetCurrentPosition
ด้วยบริดจ์ที่ส่งคืน'function fillText() { [native code] }'
ซึ่งหลอกระบบตรวจจับพื้นฐานหลายระบบได้
- มันจะแทนที่ฟังก์ชันที่ถูกแทนที่ เช่น
- การควบคุมการเข้าถึง API แบบเลือกสรร:
- FlashID อนุญาตให้ปรับแต่งตามโปรไฟล์สำหรับ API ที่ควรปรากฏว่า รองรับ, ถูกจำกัด, ล้มเหลว หรือ ถูกปกปิดด้วยการตอบสนองที่จำลองขึ้น
- ความสอดคล้องของ API ระดับอินสแตนซ์:
- API ทุกตัว — แม้กระทั่งเมื่อกู้คืนเซสชัน — ยังคงพฤติกรรมไว้เพื่อให้มั่นใจถึงความสามารถในการทำซ้ำได้ในทุกโปรไฟล์
- การแทรก Custom Stack และการปลอมแปลง ToString:
- แหล่งที่มาของ
toStringTag
,Symbol.toStringTag
และtarget
จะถูกเขียนทับเพื่อรักษาความสอดคล้องกัน
- แหล่งที่มาของ
- ความสอดคล้องของเหตุการณ์และการจำลอง Callback:
- FlashID ทำให้มั่นใจว่ารูปแบบ API แบบอะซิงโครนัสและแบบเหตุการณ์นั้นรู้สึกน่าเชื่อถือ ไม่ใช่เป็นสคริปต์
- ความแตกต่างของ API ข้ามโปรไฟล์:
- แต่ละโปรไฟล์มีพฤติกรรมแตกต่างกันแม้ว่าจะทำงานบนเครื่องเดียวกัน ซึ่งทำให้มั่นใจถึงความหลากหลายของ API ซึ่งเป็นสิ่งสำคัญสำหรับความปลอดภัยของหลายบัญชี
- เลเยอร์ Interceptor สำหรับ API ที่ทันสมัย:
- รองรับการดักจับและปกปิด API ที่กำลังดำเนินการอยู่ เช่น
MediaCapabilities
,DeviceInfo
และอื่นๆ
- รองรับการดักจับและปกปิด API ที่กำลังดำเนินการอยู่ เช่น
FlashID ไม่เพียงแค่ปลอมแปลงค่าแต่ละค่าเท่านั้น — แต่ยังสร้างแบบจำลองตัวตนของเบราว์เซอร์ที่สมเหตุสมผลอย่างสมบูรณ์สำหรับแต่ละเซสชันที่ใช้งานอยู่ ช่วยให้ผู้ใช้ยังคงใช้งานได้และตรวจจับไม่ได้ในแพลตฟอร์มที่ใช้การเชื่อมโยง API fingerprint
คุณอาจชอบ