ฉันจะระบุคอมพิวเตอร์ที่เยี่ยมชมเว็บไซต์ของฉันโดยไม่ซ้ำได้อย่างไร


184

ฉันต้องหาวิธีที่จะระบุคอมพิวเตอร์แต่ละเครื่องที่เยี่ยมชมเว็บไซต์ที่ฉันกำลังสร้าง ใครบ้างมีคำแนะนำเกี่ยวกับวิธีการบรรลุเป้าหมายนี้หรือไม่?

เพราะฉันต้องการวิธีการแก้ปัญหาในการทำงานกับทุกเครื่องและเบราว์เซอร์ทั้งหมด (ภายในเหตุผล) ฉันพยายามที่จะสร้างวิธีการแก้ปัญหาโดยใช้จาวาสคริปต์

คุกกี้จะไม่ทำ

ฉันต้องการความสามารถในการสร้าง guid ซึ่งเป็นเอกลักษณ์ของคอมพิวเตอร์และสามารถทำซ้ำได้โดยทั่วไปหากไม่มีการเปลี่ยนแปลงฮาร์ดแวร์เกิดขึ้นกับคอมพิวเตอร์ เส้นทางที่ฉันคิดว่าจะได้รับ MAC ของการ์ดเครือข่ายและข้อมูลอื่น ๆ ในลักษณะนี้ซึ่งจะเป็นเครื่องที่เยี่ยมชมเว็บไซต์


4
คุณไม่สามารถรับ mac ของการ์ดเครือข่ายได้ - IP ไม่มีข้อมูลนั้นสิ่งที่ดีที่สุดที่คุณจะได้รับคือที่อยู่ IP ของเกตเวย์ ISP สำหรับ ISP บางรายที่อาจเหมือนกันสำหรับผู้ใช้ทั้งหมดในเมืองที่กำหนด
Martin Beckett

1
ความจริงที่คุณไม่ต้องการให้ผู้ใช้สามารถหลอกได้ คำตอบคือแน่นอนว่าสิ่งนี้ไม่สามารถทำได้หากไม่มีส่วนประกอบที่เป็นส่วนตัวของคุณติดตั้งในเครื่องผู้ใช้
AnthonyWJones

ที่อยู่ MAC นั้นง่ายต่อการปลอมแปลง การเชื่อมต่อไร้สายเล็ก ๆ ของฉันจะผ่าน MAC ของคุณทดแทนตัวเองหรือใช้สิ่งที่คุณระบุ
Kent Brewster

ไม่สามารถทำได้ - คุกกี้เป็นทางออกที่ดีที่สุดของคุณ
Draemon

โปรดอ่านคำตอบของฉันในหน้านี้ ฉันมีความคิดที่ดีมากสำหรับปัญหานี้ :)
มาห์ Jazini

คำตอบ:


58

คนเหล่านี้ได้พัฒนาวิธีการพิมพ์ลายนิ้วมือสำหรับการจดจำผู้ใช้ด้วยความแม่นยำระดับสูง:

https://panopticlick.eff.org/static/browser-uniqueness.pdf

เราตรวจสอบระดับของเว็บเบราว์เซอร์ที่ทันสมัยภายใต้หัวข้อ "การพิมพ์ลายนิ้วมืออุปกรณ์" ผ่านทางรุ่นและข้อมูลการกำหนดค่าที่พวกเขาจะส่งไปยังเว็บไซต์เมื่อมีการร้องขอ เราใช้อัลกอริทึมการพิมพ์ลายนิ้วมือที่เป็นไปได้หนึ่งข้อและรวบรวมลายนิ้วมือเหล่านี้จากตัวอย่างเบราว์เซอร์ขนาดใหญ่ที่เข้าเยี่ยมชมด้านการทดสอบของเรา panopticlick.eff.org. เราสังเกตว่าการกระจายของการพิมพ์ลายนิ้วมือของเรามีอย่างน้อย 18.1 บิตของเอนโทรปีหมายความว่าถ้าเราเลือกเบราว์เซอร์แบบสุ่มเราคาดว่าเบราว์เซอร์อื่น ๆ 286,777 ตัวเท่านั้นที่จะแชร์ลายนิ้วมือ ในบรรดาเบราว์เซอร์ที่รองรับ Flash หรือ Java สถานการณ์นั้นแย่ลงโดยเบราว์เซอร์เฉลี่ยที่มีข้อมูลการระบุอย่างน้อย 18.8 บิต เบราว์เซอร์ที่มี 94.2% พร้อมแฟลชหรือจาวานั้นมีเอกลักษณ์ในตัวอย่างของเรา

โดยการสังเกตผู้เยี่ยมชมที่กลับมาเราประเมินว่าลายนิ้วมือของเบราว์เซอร์อาจเปลี่ยนแปลงเร็วเพียงใดเมื่อเวลาผ่านไป ในตัวอย่างของเราลายนิ้วมือเปลี่ยนไปอย่างรวดเร็ว แต่แม้กระทั่งฮิวริสติกแบบง่าย ๆ ก็สามารถเดาได้ว่าเมื่อลายนิ้วมือเป็นลายนิ้วมือรุ่นล่าสุดของเบราว์เซอร์ที่สังเกตเห็นก่อนหน้านี้โดย 99.1% ของการเดาถูกต้อง .

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


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

10
@Oliver คุณถูกต้อง นี่ไม่ได้ให้คำตอบกับจาน ต้องมีการอ่านเพิ่มเติมทำความเข้าใจเกี่ยวกับปัญหาทั้งหมดที่เกี่ยวข้องและทำไมข้อมูลโค้ดแบบง่ายไม่น่าจะทำงานได้อย่างสมบูรณ์ นักพัฒนาที่กล้าได้กล้าเสียอาจเขียนห้องสมุดซึ่งทำงานหนักทั้งหมดและทำให้ผู้คนค้นหา "วิธีแก้ปัญหาอย่างรวดเร็ว" เพื่อประโยชน์ในอนาคต
โจนาธาน

2
คำตอบนี้เป็นลิงก์เท่านั้น สรุปเทคนิคที่อธิบายใน PDF จะได้รับการชื่นชมในกรณีที่ PDF ไม่พร้อมใช้งาน
Damian Yerrick

2
ดูคำตอบของฉันที่นี่สำหรับแพคเกจโอเพนซอร์สและวิธีที่ง่ายต่อการติดตั้งลายนิ้วมือstackoverflow.com/a/47536192/3650835
KayakinKoder

ดังนั้นฉันควรสร้าง "คุกกี้" ที่ยืดหยุ่นได้ดีขึ้นโดยใช้ตัวเลขสุ่มจำนวนมาก: D
Luis Mauricio

49

บทนำ

ฉันไม่รู้ว่าจะมีวิธีระบุเครื่องโดยใช้เบราว์เซอร์เพียงอย่างเดียวหรือไม่ เหตุผลหลักคือ:

  • คุณจะต้องบันทึกข้อมูลในคอมพิวเตอร์ของผู้ใช้ ผู้ใช้สามารถลบข้อมูลนี้ได้ตลอดเวลา ถ้าคุณไม่มีวิธีในการสร้างข้อมูลนี้ซึ่งไม่ซ้ำกันสำหรับแต่ละเครื่องทุกเครื่องแล้วติดของคุณ
  • การตรวจสอบ คุณจำเป็นต้องป้องกันการปลอมแปลงการเซสชั่นการจี้ ฯลฯ

แม้ว่าจะมีวิธีการติดตามคอมพิวเตอร์โดยไม่ใช้คุกกี้ แต่ก็มีวิธีเลี่ยงผ่านและซอฟต์แวร์ที่จะทำสิ่งนี้โดยอัตโนมัติ หากคุณต้องการติดตามสิ่งที่อยู่บนคอมพิวเตอร์คุณจะต้องเขียนแอปพลิเคชันเนทีฟ (Apple Store / Android Store / Windows Program / ฯลฯ )

ฉันอาจไม่สามารถให้คำตอบสำหรับคำถามที่คุณถาม แต่ฉันสามารถแสดงวิธีใช้การติดตามเซสชัน ด้วยการติดตามเซสชันคุณพยายามติดตามเซสชันการสืบค้นแทนคอมพิวเตอร์ที่เข้าชมเว็บไซต์ของคุณ ด้วยการติดตามเซสชันสกีมาฐานข้อมูลของคุณจะมีลักษณะดังนี้:

sesssion:
  sessionID: string
  // Global session data goes here

  computers: [{
     BrowserID: string
     ComputerID: string
     FingerprintID: string
     userID: string
     authToken: string
     ipAddresses: ["203.525....", "203.525...", ...]
     // Computer session data goes here
  }, ...]

ข้อดีของการติดตามแบบเซสชัน:

  1. สำหรับผู้ใช้เข้าสู่ระบบคุณก็สามารถสร้างเซสชัน id เดียวกันจากผู้ใช้username/ /passwordemail
  2. sessionIDคุณยังสามารถติดตามผู้ใช้ของผู้เข้าพักใช้
  3. แม้ว่าหลายคนใช้คอมพิวเตอร์เครื่องเดียวกัน (เช่นไซเบอร์คาเฟ่) คุณสามารถติดตามพวกเขาแยกกันได้หากพวกเขาลงชื่อเข้าใช้

ข้อเสียของการติดตามเซสชัน:

  1. เซสชันใช้เบราว์เซอร์ไม่ใช่คอมพิวเตอร์ หากผู้ใช้ใช้ 2 เบราว์เซอร์ที่แตกต่างกันก็จะส่งผลใน 2 ช่วง หากนี่เป็นปัญหาคุณสามารถหยุดอ่านได้ที่นี่
  2. เซสชั่นหมดอายุหากผู้ใช้ไม่ได้เข้าสู่ระบบหากผู้ใช้ไม่ได้เข้าสู่ระบบพวกเขาจะใช้เซสชั่นผู้เยี่ยมชมซึ่งจะถูกยกเลิกหากผู้ใช้ลบคุกกี้และแคชเบราว์เซอร์

การดำเนินงาน

การดำเนินการนี้มีหลายวิธี ฉันไม่คิดว่าฉันสามารถครอบคลุมพวกเขาทั้งหมดที่ฉันเพิ่งจะแสดงรายการที่ชื่นชอบซึ่งจะทำให้นี้คำตอบความเห็น จำไว้ในใจ

ข้อมูลพื้นฐานเกี่ยวกับ

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

ในการดำเนินการนี้ฉันจะใช้กลไกการแคชของเบราว์เซอร์ ( RFC ), WebStorage API ( MDN ) และคุกกี้ของเบราว์เซอร์ ( RFC , Google Analytics )

ถูกกฎหมาย

เพื่อที่จะใช้ประโยชน์จากการติดตามรหัสที่คุณจำเป็นต้องเพิ่มให้ทั้งนโยบายความเป็นส่วนตัวของคุณและเงื่อนไขของคุณในการใช้โดยเฉพาะอย่างยิ่งภายใต้การย่อยหัวข้อการติดตาม เราจะใช้ปุ่มต่อไปนี้ทั้งบนdocument.cookieและ window.localStorage:

  • _ga : ข้อมูล Google Analytics
  • __utma : คุกกี้ติดตามของ Google Analytics
  • sid : SessionID

ตรวจสอบให้แน่ใจว่าคุณมีลิงก์ไปยังนโยบายความเป็นส่วนตัวและข้อกำหนดการใช้งานของทุกหน้าที่ใช้การติดตาม

ฉันจะเก็บข้อมูลเซสชันของฉันได้ที่ไหน

คุณสามารถจัดเก็บข้อมูลเซสชันของคุณในฐานข้อมูลเว็บไซต์ของคุณหรือในคอมพิวเตอร์ของผู้ใช้ เนื่องจากปกติฉันทำงานบนไซต์ที่เล็กกว่า (ให้มากกว่า 10,000 การเชื่อมต่อต่อเนื่อง) ที่ใช้แอปพลิเคชันบุคคลที่สาม (Google Analytics / Clicky / ฯลฯ ) จึงเป็นการดีที่สุดที่ฉันจะเก็บข้อมูลไว้ในคอมพิวเตอร์ของลูกค้า นี่มีข้อดีดังต่อไปนี้:

  1. ไม่มีการค้นหา / โอเวอร์เฮด / โหลด / เวลาแฝง / พื้นที่ / ฐานข้อมูล
  2. ผู้ใช้สามารถลบข้อมูลได้ทุกเมื่อที่ต้องการโดยไม่จำเป็นต้องเขียนอีเมลที่น่ารำคาญ

และข้อเสีย:

  1. ข้อมูลจะต้องมีการเข้ารหัส / ถอดรหัสและลงนาม / ตรวจสอบซึ่งจะสร้างค่าใช้จ่ายซีพียูบนไคลเอนต์ (ไม่เลวร้าย) และเซิร์ฟเวอร์ (บาห์!)
  2. ข้อมูลจะถูกลบเมื่อผู้ใช้ลบคุกกี้และแคช (นี่คือสิ่งที่ฉันต้องการจริงๆ)
  3. ข้อมูลไม่พร้อมใช้งานสำหรับการวิเคราะห์เมื่อผู้ใช้ออฟไลน์ (การวิเคราะห์สำหรับผู้ใช้ที่กำลังเรียกดูในปัจจุบันเท่านั้น)

UUIDs

  • BrowserID : รหัสเฉพาะที่สร้างจากสตริงตัวแทนผู้ใช้เบราว์เซอร์Browser|BrowserVersion|OS|OSVersion|Processor|MozzilaMajorVersion|GeckoMajorVersion
  • ComputerID : สร้างจากที่อยู่ IP ของผู้ใช้และรหัสเซสชัน HTTPS getISP(requestIP)|getHTTPSClientKey()
  • FingerPrintID : JavaScript พิมพ์ลายนิ้วมือตามขึ้นอยู่กับการปรับเปลี่ยนfingerprint.jsFingerPrint.get()
  • SessionID : สร้างรหัสสุ่มเมื่อผู้ใช้เยี่ยมชมไซต์ครั้งที่ 1BrowserID|ComputerID|randombytes(256)
  • GoogleID : สร้างจาก__utmaคุกกี้getCookie(__utma).uniqueid

กลไก

เมื่อวันก่อนฉันกำลังดูวิลเลียมส์วิลเลียมส์แสดงกับแฟนสาวของฉันและรู้สึกตกใจอย่างยิ่งเมื่อโฮสต์แนะนำให้ผู้ชมของเธอลบประวัติเบราว์เซอร์อย่างน้อยเดือนละครั้ง การลบประวัติเบราว์เซอร์ตามปกติจะมีผลต่อไปนี้:

  1. ลบประวัติเว็บไซต์ที่เข้าชม
  2. ลบคุกกี้และwindow.localStorage(aww man)

เบราว์เซอร์ที่ทันสมัยส่วนใหญ่ทำให้ตัวเลือกนี้พร้อมใช้งาน แต่ไม่กลัวเพื่อน สำหรับมีทางออก เบราว์เซอร์มีกลไกการแคชเพื่อจัดเก็บสคริปต์ / ภาพและอื่น ๆ โดยทั่วไปแม้ว่าเราจะลบประวัติของเราแคชเบราว์เซอร์นี้ยังคงอยู่ สิ่งที่เราต้องการคือวิธีเก็บข้อมูลของเราที่นี่ มี 2 ​​วิธีในการทำเช่นนี้ สิ่งที่ดีกว่าคือการใช้ภาพ SVG และเก็บข้อมูลของเราไว้ในแท็ก วิธีนี้ยังสามารถดึงข้อมูลได้แม้ว่าจะปิดการใช้งาน JavaScript โดยใช้แฟลช อย่างไรก็ตามเนื่องจากมันค่อนข้างซับซ้อนฉันจะแสดงให้เห็นถึงวิธีการอื่นที่ใช้ JSONP ( Wikipedia )

example.com/assets/js/tracking.js (จริง ๆ แล้ว tracking.php)

var now = new Date();
var window.__sid = "SessionID"; // Server generated

setCookie("sid", window.__sid, now.setFullYear(now.getFullYear() + 1, now.getMonth(), now.getDate() - 1));

if( "localStorage" in window ) {
  window.localStorage.setItem("sid", window.__sid);
}

ตอนนี้เราสามารถรับกุญแจเซสชันได้ตลอดเวลา:

window.__sid || window.localStorage.getItem("sid") || getCookie("sid") || ""

ฉันจะติดตั้ง tracking.js ในเบราว์เซอร์ได้อย่างไร

เราสามารถทำได้โดยใช้ส่วนควบคุมแคช , Last-ModifiedและETag HTTP header เราสามารถใช้SessionIDเป็นค่าสำหรับส่วนหัว etag:

setHeaders({
  "ETag": SessionID,
  "Last-Modified": new Date(0).toUTCString(),
  "Cache-Control": "private, max-age=31536000, s-max-age=31536000, must-revalidate"
})

Last-Modifiedheader บอกเบราว์เซอร์ว่าไฟล์นี้ไม่มีการแก้ไข Cache-Controlบอกผู้รับมอบฉันทะและเกตเวย์ไม่ให้แคชเอกสาร แต่บอกให้เบราว์เซอร์ทำการแคชเป็นเวลา 1 ปี

ครั้งต่อไปที่เบราว์เซอร์ร้องขอเอกสารจะส่งIf-Modified-SinceและIf-None-Matchส่วนหัว เราสามารถใช้สิ่งเหล่านี้เพื่อ304 Not Modifiedตอบกลับ

example.com/assets/js/tracking.php

$sid = getHeader("If-None-Match") ?: getHeader("if-none-match") ?: getHeader("IF-NONE-MATCH") ?: ""; 
$ifModifiedSince = hasHeader("If-Modified-Since") ?: hasHeader("if-modified-since") ?: hasHeader("IF-MODIFIED-SINCE");

if( validateSession($sid) ) {
  if( sessionExists($sid) ) {
    continueSession($sid);
    send304();
  } else {
    startSession($sid);
    send304();
  }
} else if( $ifModifiedSince ) {
  send304();
} else {
  startSession();
  send200();
}

ตอนนี้ทุกครั้งที่เบราว์เซอร์ร้องขอtracking.jsเซิร์ฟเวอร์ของเราจะตอบสนองกับผลและบังคับให้มีการดำเนินการของสำเนาของ304 Not Modifiedtracking.js

ฉันยังไม่เข้าใจ อธิบายให้ฉัน

สมมติว่าผู้ใช้ล้างประวัติการเข้าชมและรีเฟรชหน้าเว็บ สิ่งเดียวที่เหลืออยู่ในคอมพิวเตอร์ของผู้ใช้คือสำเนาของtracking.jsแคชเบราว์เซอร์ เมื่อเบราว์เซอร์ร้องขอtracking.jsมันจะได้รับการ304 Not Modifiedตอบกลับซึ่งทำให้มันเรียกใช้เวอร์ชันที่ 1 ของtracking.jsมัน tracking.jsดำเนินการและคืนค่าSessionIDที่ถูกลบ

การตรวจสอบ

สมมติว่า Haxor X ขโมยคุกกี้ลูกค้าของเราในขณะที่พวกเขายังคงเข้าสู่ระบบเราจะปกป้องพวกเขาได้อย่างไร? การเข้ารหัสและลายนิ้วมือเบราว์เซอร์เพื่อช่วยเหลือ โปรดจำไว้ว่าคำนิยามดั้งเดิมของเราSessionIDคือ:

BrowserID|ComputerID|randomBytes(256)

เราสามารถเปลี่ยนสิ่งนี้เป็น:

Timestamp|BrowserID|ComputerID|encrypt(randomBytes(256), hk)|sign(Timestamp|BrowserID|ComputerID|randomBytes(256), hk)

hk = sign(Timestamp|BrowserID|ComputerID, serverKey)ที่ไหน

ตอนนี้เราสามารถตรวจสอบความถูกต้องของเราSessionIDโดยใช้อัลกอริทึมต่อไปนี้:

if( getTimestamp($sid) is older than 1 year ) return false;
if( getBrowserID($sid) !== createBrowserID($_Request, $_Server) ) return false;
if( getComputerID($sid) !== createComputerID($_Request, $_Server) return false;

$hk = sign(getTimestamp($sid) + getBrowserID($sid) + getComputerID($sid), $SERVER["key"]);

if( !verify(getTimestamp($sid) + getBrowserID($sid) + getComputerID($sid) + decrypt(getRandomBytes($sid), hk), getSignature($sid), $hk) ) return false;

return true; 

ตอนนี้เพื่อให้การโจมตีของ Haxor ต้องทำงาน:

  1. ComputerIDมีเหมือนกัน นั่นหมายความว่าพวกเขาจะต้องมีผู้ให้บริการ ISP รายเดียวกันกับเหยื่อ (Tricky) นี่จะเป็นการเปิดโอกาสให้เหยื่อของเราดำเนินการทางกฎหมายในประเทศของตนเอง Haxor จะต้องได้รับกุญแจเซสชั่น HTTPS จากเหยื่อ (ยาก)
  2. BrowserIDมีเหมือนกัน ทุกคนสามารถหลอกสตริงตัวแทนผู้ใช้ (น่ารำคาญ)
  3. สามารถสร้างปลอมของตัวเองSessionID(ยากมาก) ปริมาณ atacks จะไม่ทำงานเพราะเราใช้การประทับเวลาเพื่อสร้างคีย์การเข้ารหัส / เซ็นชื่อดังนั้นโดยพื้นฐานแล้วมันเหมือนกับการสร้างคีย์ใหม่สำหรับแต่ละเซสชั่น ยิ่งไปกว่านั้นเราเข้ารหัสแบบสุ่มไบต์เพื่อให้การโจมตีพจนานุกรมง่าย ๆ ก็ออกจากคำถาม

เราสามารถปรับปรุงการตรวจสอบโดยการส่งต่อGoogleIDและFingerprintID(ผ่าน ajax หรือเขตข้อมูลที่ซ่อนอยู่) และการจับคู่กับสิ่งเหล่านั้น

if( GoogleID != getStoredGoodleID($sid) ) return false;
if( byte_difference(FingerPrintID, getStoredFingerprint($sid) > 10%) return false;

1
นี่คือคำตอบที่สวยงามตามทาง ข้อมูลมากมาย ฉันประหลาดใจที่คุณไม่มีผู้โหวตมากขึ้น ฉันไม่อยากเชื่อเลยว่าเทคนิคที่มี svgs และ jsonp มีอยู่จริง แต่มันต้อง มีไลบรารีที่ตรงข้ามกับเทคนิคดังกล่าวหรือไม่เมื่อปิดการใช้งานคุกกี้ / localStorage / sessionStorage
faceyspacey.com

นอกจากนี้ฉันสงสัยว่ามีรุ่นขั้นสูงนี้เพียงแค่ใช้ไฟล์ tracking.js ที่แคชไว้ของคุณ (หรือไฟล์หลาย ๆ ไฟล์) เพื่อใช้เป็นไฟล์ localStorage / cookies หรือเพื่อจดจำข้อมูลจำนวนมาก ความคิดนี้จะให้ห้องสมุดมีวิธีเช่นstorageFacade.setItemและ storageFacade.getItem . And it tries to use localStorage, but fallsback to your technique when disabled. ..Perhaps the way it works is via a single file for "diffs" i.e. each time you call setItem . And then a manifest` ของ diffs ทั้งหมดที่สร้างขึ้นในระหว่างเซสชันที่สร้างขึ้นโดยอัตโนมัติทุกครั้งในขณะที่
faceyspacey.com

หากรายการนั้นถูกสร้างขึ้นทุกครั้งในระยะเวลาหนึ่งโดยพื้นฐานแล้วมันจะ จำกัด จำนวนรายการที่สร้างขึ้น จากนั้นใน javascript คุณสามารถลองขอรายการที่เป็นไปได้ทั้งหมดที่สร้างขึ้นจากนั้นใช้รายการล่าสุดเพื่อสร้างสถานะใหม่จากสแน็ปช็อต diff หากเรามีความแตกต่างอาจมีหลายร้อยหรือหลายพันและนั่นอาจเป็นปัญหาด้านประสิทธิภาพในการพยายามดึงข้อมูลทั้งหมดจนกว่าจะล้มเหลว คือคุณดึงข้อมูลที่ต่างออกไปหรือเพิ่มขึ้น: manifest-1.js, manifest-2.js, และอื่น ๆ จนกว่าจะล้มเหลว (เพราะไม่มีอยู่) ซึ่งหมายความว่าคุณมีรายการทั้งหมด (หรือต่างกัน)
faceyspacey.com

@ faceyspacey.com ขออภัยไม่มีห้องสมุดเลย คุณต้องโค้ดและอัปเดตโซลูชันที่กำหนดเองของคุณอย่างต่อเนื่อง ลองคิดดู ทันทีที่คุณพัฒนา lib สำหรับ add blockers / browser / etc ทั้งหมดนี้จะตอบโต้ทันที เหตุผลเดียวที่ทำให้งานนี้ขึ้นอยู่กับฟีเจอร์เบราว์เซอร์หลักที่สำคัญซึ่งไม่สามารถลบ / ปิดการใช้งานได้: CACHING ฉันสูญเสียการเข้าสู่ระบบและรหัสผ่านของฉัน และเนื่องจากฉันไม่ได้ถามคำถามจำนวนมากอีกต่อไปฉันไม่จำเป็นต้องตอบคำถามมากมายดังนั้นฉันจึงสามารถปล่อยให้มีชื่อเสียงได้ ฉันเพิ่งเห็นสิ่งนี้และรู้ว่าไม่มีคำตอบที่แท้จริง
วอลเตอร์

30

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


7
หากเขาเข้าชมไซต์ของคุณด้วยเบราว์เซอร์ที่แตกต่างกัน 3 ตัวเขาจะมีคุกกี้ที่แตกต่างกัน 3 ตัวเนื่องจากคุกกี้จะไม่ถูกแชร์ในแอพ นอกจากนี้หากเขาใช้ DHCP แทนที่จะเป็นที่อยู่ IP แบบคงที่เขาอาจจะไม่มีที่อยู่ IP เดียวกันสำหรับคอมพิวเตอร์ของเขาเป็นเวลานาน
JohnnySoftware

2
ใช่และไม่. เบราว์เซอร์พิมพ์ลายนิ้วมือระบุโปรไฟล์เบราว์เซอร์ที่มีความน่าจะเป็นสูง แต่ไม่ใช่การระบุแบบตัวต่อตัวที่ต้องการในคำถามนี้ นอกจากนี้ยังค่อนข้างง่าย (แต่อาจไม่ใช่เรื่องง่าย ) สำหรับผู้ใช้ที่เข้าใจในการหลีกเลี่ยงอย่างจงใจหากต้องการ
erickson

30

ความเป็นไปได้คือการใช้แฟลชคุกกี้ :

  • ความพร้อมใช้งานที่แพร่หลาย (ร้อยละ 95 ของผู้เข้าชมอาจมีแฟลช)
  • คุณสามารถเก็บข้อมูลได้มากขึ้นต่อคุกกี้ (สูงสุด 100 KB)
  • แชร์ผ่านเบราว์เซอร์จึงมีแนวโน้มที่จะระบุเครื่องโดยเฉพาะ
  • การล้างคุกกี้ของเบราว์เซอร์ไม่ได้เป็นการลบคุกกี้แฟลชออก

คุณจะต้องสร้างภาพยนตร์แฟลชขนาดเล็ก (ซ่อน) เพื่ออ่านและเขียน

ตรวจสอบให้แน่ใจว่าผู้ใช้ของคุณเลือกที่จะถูกติดตามไม่เช่นนั้นคุณจะบุกรุกความเป็นส่วนตัวและกลายเป็นคนเลว


5
ผู้ใช้หลายคนใช้ Flashblock Flash จะเปิดใช้งานจากผู้ใช้ด้วยการคลิกหากเขาต้องการดู
Horcrux7

3
มีวิธีการลบคุกกี้ แต่มีผู้ใช้เกินกว่าค่าเฉลี่ย มีหน้าบนเว็บไซต์ของ Adobe สำหรับการดูและลบ LSO (Local Shared Object en.wikipedia.org/wiki/Local_Shared_Object ) ถึงแม้ว่าสำหรับผู้ใช้ Firefox add-on Objection เป็นวิธีที่ง่ายที่สุดในการลบออก
Sam Hasler

ฉันคิดว่านี่เป็นหนึ่งในโซลูชั่นที่ดีที่สุด Youtube, Google ฯลฯ ใช้ LSO เพื่อต่อสู้กับการละเมิด
Uku Loskit

4
แฟลชคุกกี้จะถูกลบอย่างง่ายดายเหมือนคุกกี้ HTTP ใน Firefox และ Chrome รุ่นใหม่: Wikipedia :Adobe announced that Flash Player 10.3 enables Mozilla Firefox 4 and "future releases of Apple Safari and Google Chrome" to delete local shared objects,[11] so since version 4, Firefox treats LSOs the same way as HTTP cookies - deletion rules that previously applied only to HTTP cookies now also apply to LSOs.
JoJo

4
สถานการณ์มีการเปลี่ยนแปลงในช่วงเก้าปีที่ผ่านมา ทุกวันนี้ผู้ใช้ 95% ไม่ได้อยู่บนเดสก์ท็อปและอุปกรณ์พกพาก็ไม่เคยยอมรับ Adobe Flash Player
Damian Yerrick

21

คุณอาจต้องการลองตั้งรหัสเฉพาะใน Evercookie (มันจะทำงานข้ามเบราว์เซอร์ดูคำถามที่พบบ่อย): http://samy.pl/evercookie/

นอกจากนี้ยังมี บริษัท ชื่อ ThreatMetrix ที่ใช้โดย บริษัท ขนาดใหญ่จำนวนมากเพื่อแก้ปัญหานี้: http://threatmetrix.com/our-solutions/solutions-by-product/trustdefender-id/ พวกเขาค่อนข้างแพงและบางส่วนของ ผลิตภัณฑ์อื่น ๆ ของพวกเขาไม่ดีมาก แต่รหัสอุปกรณ์ทำงานได้ดี

ในที่สุดก็มีการดำเนินการ jquery โอเพนซอร์สของความคิด panopticlick: https://github.com/carlo/jquery-browser-fingerprint ดูเหมือนว่าอบสวยครึ่งตอนนี้ แต่สามารถขยายได้

หวังว่ามันจะช่วย!


+ 1 - Brian - ข้อมูลเยี่ยม! ทั้งหมดนี้ได้พิสูจน์แล้วว่ามีประโยชน์มาก ขอบคุณ. เพิ่มข้อมูลเพิ่มเติมหากคุณยังไม่ได้เรียนรู้เพิ่มเติม
Ben O

1
เกี่ยวกับ Evercookie พยายามกับ Opera ตั้งค่าคุกกี้จากนั้นลบประวัติทั้งหมดจาก Opera แล้วปิด Opera เปิดคลิกอีกครั้งบนClick to rediscover cookiesและดูเป็นโมฆะหรือไม่ได้กำหนด ดังนั้นสิ่งนี้ไม่ได้ผลสำหรับฉัน
Andris

ทดลองใช้หน้าตัวอย่างด้วยโหมด iOS Safari ส่วนตัวและไม่ระบุตัวตนบนเดสก์ท็อป Chrome คุกกี้ไม่สามารถเรียกคืนได้หลังจากรีสตาร์ทเบราว์เซอร์
Morio

20

: มีลายนิ้วมือที่นิยมวิธีการที่เรียกว่าผ้าใบอธิบายไว้ในบทความทางวิทยาศาสตร์นี้เป็นเว็บไม่เคยลืม: Persistent กลไกการติดตามในป่า เมื่อคุณเริ่มมองหามันคุณจะแปลกใจว่ามันถูกใช้บ่อยแค่ไหน วิธีการสร้างลายนิ้วมือที่ไม่ซ้ำกันซึ่งสอดคล้องกันสำหรับเบราว์เซอร์ / ฮาร์ดแวร์แต่ละชุด

บทความนี้ยังตรวจทานวิธีการติดตามแบบถาวรอื่น ๆ เช่น Evercookies, respawning http และ Flash cookies และการซิงค์คุกกี้

ข้อมูลเพิ่มเติมเกี่ยวกับลายพิมพ์บนผืนผ้าใบที่นี่:


1
ดังนั้นหากอุปกรณ์สองเครื่องเหมือนกัน (คอมพิวเตอร์แบทช์เดียวกันระบบปฏิบัติการเดียวกันเบราว์เซอร์เดียวกัน) ลายนิ้วมือเหมือนกันใช่ไหม
xiaoyu2er

คำถามจริงที่นี่คือคือห้องสมุดจาวาสคริปต์ที่ฉันสามารถวางรหัสของฉันที่จะใช้นี้ การอ่านทฤษฎีจำนวนมากไม่ได้แก้ปัญหาที่ต้องแก้ไขภายใน 60 นาทีข้างหน้า
Thanasis Ioannidis

11

มีข้อมูลจำนวนเล็กน้อยเท่านั้นที่คุณสามารถรับผ่านการเชื่อมต่อ HTTP

  1. IP - แต่อย่างที่คนอื่น ๆ พูดกันว่านี่ไม่ใช่การแก้ไขสำหรับคนจำนวนมากถ้าไม่ใช่ผู้ใช้อินเทอร์เน็ตส่วนใหญ่เนื่องจากนโยบายการจัดสรรแบบไดนามิกของ ISP

  2. สตริงผู้ใช้ - เบราว์เซอร์เกือบทุกชนิดจะส่งเบราว์เซอร์ประเภทใดที่มีคำขอทั้งหมด อย่างไรก็ตามผู้ใช้สามารถตั้งค่านี้ในเบราว์เซอร์จำนวนมากในวันนี้

  3. คอลเลกชันของเขตข้อมูลคำขอ - มีเขตข้อมูลอื่นที่ส่งมาพร้อมกับคำขอแต่ละรายการเช่นการเข้ารหัสที่ได้รับการสนับสนุน ฯลฯ เหล่านี้หากใช้ในการรวมสามารถช่วยในการระบุเครื่องของผู้ใช้ แต่ขึ้นอยู่กับเบราว์เซอร์อีกครั้ง

  4. คุกกี้ - การตั้งค่าคุกกี้เป็นอีกวิธีหนึ่งในการระบุเครื่องหรือเฉพาะเบราว์เซอร์บนเครื่อง แต่อย่างที่คนอื่น ๆ ได้กล่าวไว้ผู้ใช้สามารถลบหรือปิดใช้งานได้และสามารถใช้ได้กับเบราว์เซอร์เท่านั้นไม่ใช่ เครื่อง

ดังนั้นการตอบสนองที่ถูกต้องคือคุณไม่สามารถบรรลุสิ่งที่จะมีชีวิตอยู่ผ่าน HTTP ผ่านโปรโตคอล IP เพียงอย่างเดียว อย่างไรก็ตามด้วยการใช้คุกกี้รวมถึง IP และฟิลด์ในคำขอ HTTP คุณมีโอกาสดีในการคาดเดาเรียงลำดับว่าเป็นเครื่องใด ผู้ใช้มักใช้เบราว์เซอร์เดียวเท่านั้นและบ่อยครั้งจากเครื่องเดียวดังนั้นสิ่งนี้อาจเชื่อถือได้ แต่สิ่งนี้จะแตกต่างกันไปขึ้นอยู่กับผู้ชม ... นักเทคโนโลยีมีแนวโน้มที่จะยุ่งกับสิ่งนี้มากขึ้นและใช้เครื่อง / เบราว์เซอร์มากขึ้น นอกจากนี้ยังสามารถเชื่อมโยงกับความพยายามในการระบุตำแหน่งทางภูมิศาสตร์ของ IP และใช้ข้อมูลนั้นได้เช่นกัน แต่ในกรณีใด ๆ ไม่มีวิธีแก้ปัญหาที่จะแก้ไขได้ตลอดเวลา


10

มีข้อบกพร่องเกี่ยวกับทั้งคุกกี้และวิธีที่ไม่ใช่คุกกี้ แต่ถ้าคุณสามารถให้อภัยข้อบกพร่องของวิธีการใช้คุกกี้ได้นี่เป็นแนวคิด

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

และคุณสามารถเขียนรหัสได้ง่ายพอที่จะเข้าถึงค่านั้นหรือใช้ฟังก์ชันของสคริปต์ getUniqueId()นี้


ฉันจะได้รับ ID เดียวกันโดยใช้getUniqueId()ในเบราว์เซอร์ที่แตกต่างกันในเครื่องเดียวกันได้หรือไม่
Ankur Akvaliya

8

เช่นเดียวกับการแก้ปัญหาก่อนหน้าคุกกี้เป็นวิธีการที่ดีจะทราบว่าพวกเขาระบุเบราว์เซอร์แม้ว่า หากฉันเข้าชมเว็บไซต์ใน Firefox และจากนั้นในคุกกี้ของ Internet Explorer ก็จะถูกจัดเก็บแยกกันทั้งสองครั้ง ผู้ใช้บางคนยังปิดการใช้งานคุกกี้ (แต่คนอื่นปิดการใช้งาน JavaScript)

อีกวิธีที่ควรพิจารณาคือการระบุ IP และชื่อโฮสต์ (โปรดทราบว่าสิ่งเหล่านี้อาจแตกต่างกันไปสำหรับผู้ใช้ IP แบบ dial-up / non-static AOL ยังใช้ IP แบบครอบคลุม) อย่างไรก็ตามเนื่องจากสิ่งนี้ระบุเครือข่ายเท่านั้นจึงอาจไม่ทำงานเช่นเดียวกับคุกกี้


จุดที่ดีที่มีที่อยู่ IP ระบุจุดเข้าถึงเครือข่าย - ด้วย NAT อาจมีทั้งประเทศซ่อนอยู่หลังที่อยู่ IP เดียวและคุณจะไม่ฉลาดเลย ด้วยการขาดแคลนที่อยู่ IPv4 คุณจะยังคงเห็น บริษัท ขนาดใหญ่หรือโรงเรียน / มหาวิทยาลัยแบ่งปันที่อยู่ IP เดียวสำหรับการรับส่งข้อมูลอินเทอร์เน็ตขาออก
Piskvor ออกจากอาคาร

6

คำแนะนำในการใช้คุกกี้นอกเหนือจากชุดคุณลักษณะการระบุที่ครอบคลุมเฉพาะสำหรับการซักถามนั้นมีอยู่ในส่วนหัวคำขอ HTTP ดังนั้นจึงเป็นไปได้ที่จะใช้ชุดย่อยเหล่านี้เพื่อสร้างตัวบ่งชี้ที่ไม่ซ้ำกันสำหรับตัวแทนผู้ใช้ (เช่นเบราว์เซอร์) นอกจากนี้ข้อมูลส่วนใหญ่อาจถูกบันทึกไว้ใน "บันทึกการเข้าถึง" ของซอฟต์แวร์เว็บเซิร์ฟเวอร์ของคุณตามค่าเริ่มต้นและหากไม่สามารถกำหนดค่าให้ทำเช่นนั้นได้อย่างง่ายดาย จากนั้นสามารถพัฒนา utlity ที่เพียงสแกนเนื้อหาของบันทึกนี้สร้างลายนิ้วมือของคำขอแต่ละรายการประกอบด้วย, พูด, ที่อยู่ IP และสตริงตัวแทนผู้ใช้ ฯลฯ ข้อมูลเพิ่มเติมที่มีอยู่แม้รวมถึงเนื้อหาของคุกกี้ที่เฉพาะเจาะจงก็เพิ่มคุณภาพของความเป็นเอกลักษณ์ของลายนิ้วมือนี้ แม้ว่าตามที่คนอื่น ๆ ได้ระบุไว้แล้วโปรโตคอล HTTP ไม่ได้ทำให้เข้าใจผิดได้ 100% แต่ที่ดีที่สุดมันก็เป็นเพียงตัวบ่งชี้ที่ดีพอสมควร


6

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

นี่เป็นวิธีการตรวจสอบโดยทั่วไปที่ใช้โดยธนาคาร

สมมติว่าคุณกำลังเข้าถึงเว็บไซต์ธนาคารของคุณผ่าน example-isp.com ครั้งแรกที่คุณอยู่ที่นั่นคุณจะถูกขอรหัสผ่านรวมทั้งการตรวจสอบสิทธิ์เพิ่มเติม เมื่อคุณผ่านไปแล้วธนาคารจะรู้ว่าผู้ใช้ "นั้นมีค่า" ได้รับการรับรองความถูกต้องในการเข้าถึงเว็บไซต์ผ่านทาง example-isp.com

ในอนาคตระบบจะไม่ขอการตรวจสอบสิทธิ์เพิ่มเติม (เกินรหัสผ่าน) เมื่อคุณเข้าใช้งานเว็บไซต์ผ่าน example-isp.com หากคุณพยายามเข้าถึงธนาคารผ่านทาง--comp.comอีกครั้งธนาคารจะดำเนินการตามขั้นตอนเดิมอีกครั้ง

ดังนั้นเพื่อสรุปสิ่งที่ธนาคารระบุคือ ISP และ / หรือ netblock ของคุณตามที่อยู่ IP ของคุณ เห็นได้ชัดว่าไม่ใช่ผู้ใช้ทุกคนที่ ISP ของคุณคือคุณซึ่งเป็นสาเหตุที่ธนาคารยังขอรหัสผ่านของคุณ

คุณเคยมี บริษัท บัตรเครดิตโทรมาเพื่อยืนยันว่าทุกอย่างเรียบร้อยดีเมื่อคุณใช้บัตรเครดิตในประเทศอื่น? แนวคิดเดียวกัน


4

จริงๆแล้วสิ่งที่คุณต้องการทำไม่สามารถทำได้เพราะโปรโตคอลไม่อนุญาตให้ทำเช่นนี้ หากมีการใช้ IP แบบคงที่ในระดับสากลคุณอาจสามารถทำได้ พวกเขาไม่ใช่ดังนั้นคุณไม่สามารถ

หากคุณต้องการระบุบุคคลจริงๆให้พวกเขาเข้าสู่ระบบ

เนื่องจากพวกเขาอาจจะย้ายไปยังหน้าต่างๆในเว็บไซต์ของคุณคุณต้องมีวิธีในการติดตามพวกเขาในขณะที่พวกเขาย้าย

ตราบใดที่พวกเขาลงชื่อเข้าใช้และคุณกำลังติดตามเซสชันของพวกเขาภายในเว็บไซต์ของคุณผ่านคุกกี้ / ลิงค์ - พารามิเตอร์ / บีคอน / อะไรก็ตามคุณสามารถมั่นใจได้ว่าพวกเขากำลังใช้คอมพิวเตอร์เครื่องเดียวกันในช่วงเวลานั้น

ในที่สุดมันไม่ถูกต้องที่จะบอกว่านี่เป็นการบอกคุณว่าคอมพิวเตอร์เครื่องใดที่พวกเขาใช้หากผู้ใช้ของคุณไม่ได้ใช้เครือข่ายท้องถิ่นของคุณเองและไม่มีที่อยู่ IP แบบคงที่

หากสิ่งที่คุณต้องการจะทำด้วยความร่วมมือของผู้ใช้และมีผู้ใช้เพียงคนเดียวต่อคุกกี้และพวกเขาใช้เว็บเบราว์เซอร์เดียวเพียงใช้คุกกี้


3

คุกกี้จะไม่เป็นประโยชน์สำหรับการพิจารณาผู้เข้าชมที่ไม่ซ้ำ ผู้ใช้สามารถล้างคุกกี้และรีเฟรชไซต์ - จากนั้นเขาถูกจัดประเภทเป็นผู้ใช้ใหม่อีกครั้ง

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

ตัวอย่างเช่นการใช้ PHP มันเป็นเรื่องเล็กน้อยที่จะได้รับที่อยู่ IP ของผู้เข้าชมและเก็บไว้ในไฟล์ข้อความ (หรือฐานข้อมูล sql)

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

หวังว่าจะช่วย


4
ฉันและภรรยาเรียกดูจากคอมพิวเตอร์สี่เครื่องหลังไฟร์วอลล์ NAT ที่บ้าน เราแสดงให้เห็นว่ามี IP เดียวกันดังนั้นตามแบบแผนของคุณเราจะแสดงเป็นผู้ใช้เดียวกัน
อดัมเนส

เกิดอะไรขึ้นถ้าใน mysql เพื่อเขียนตัวแปรเพิ่มเติม (ที่กล่าวถึงที่นี่panopticlick.eff.org/browser-uniqueness.pdf )? ดังนั้นที่อยู่ IP จะเหมือนกัน แต่คุณสมบัติอื่น ๆ อาจแตกต่างกัน
Andris

3

เพราะฉันต้องการวิธีการแก้ปัญหาในการทำงานกับทุกเครื่องและเบราว์เซอร์ทั้งหมด (ภายในเหตุผล) ฉันพยายามที่จะสร้างวิธีการแก้ปัญหาโดยใช้จาวาสคริปต์

นั่นเป็นเหตุผลที่ดีที่จะไม่ใช้จาวาสคริปต์หรือ

อย่างที่คนอื่นพูดกัน - คุ้กกี้อาจเป็นตัวเลือกที่ดีที่สุดของคุณ - แค่ระวังข้อ จำกัด


3

คุณสามารถใช้ลายนิ้วมือ js2

new Fingerprint2().get(function(result, components) {
  console.log(result) // a hash, representing your device fingerprint
  console.log(components) // an array of FP components
  //submit hash and JSON object to the server 
})

หลังจากนั้นคุณสามารถตรวจสอบผู้ใช้ทั้งหมดของคุณกับที่มีอยู่และตรวจสอบความคล้ายคลึงกันของ JSON ดังนั้นแม้ว่าลายนิ้วมือของพวกเขาจะกลายพันธุ์คุณยังสามารถติดตามพวกเขาได้


2

ฉันเดาคำตัดสินว่าฉันไม่สามารถระบุคอมพิวเตอร์ที่เข้าเยี่ยมชมเว็บไซต์ของฉันโดยทางโปรแกรม

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

นอกจากนี้หลังจาก googling มากในวันนี้ฉันพบ บริษัท ต่อไปนี้ที่อ้างว่าขายโซลูชันที่ระบุเครื่องที่เยี่ยมชมเว็บไซต์โดยเฉพาะ http://www.the41.com/products.asp

ฉันขอขอบคุณข้อมูลที่ดีทั้งหมดหากคุณสามารถชี้แจงเพิ่มเติมข้อมูลที่ขัดแย้งนี้ฉันพบว่าฉันจะขอบคุณมันมาก


โดยอิงจากสิ่งนี้: the41.com/download/ ...... ดูเหมือนว่าโซลูชันของพวกเขาคือการทำให้ผู้ใช้ดาวน์โหลดซอฟต์แวร์บางส่วนซึ่งสร้างตัวระบุที่ไม่ซ้ำกันตามเครื่องและเชื่อมโยงกับข้อมูลรับรองการเข้าสู่ระบบบางส่วน
mmacaulay

ดังที่ได้กล่าวมาแล้วคุณไม่ได้แยกธนาคารของคุณโดยใช้คุกกี้แฟลช วิธีล้างคุกกี้ Flash และการสนทนาอื่น ๆ เกี่ยวกับปัญหา: tips.vlaurie.com/2007/10/24/…
micahwittman

ฉันเดาว่า: ธนาคารน่าเชื่อถือว่าคุณคือคุณถ้าคุณ (1) รู้จักชื่อผู้ใช้ของคุณ (2) รู้รหัสผ่านของคุณและ (3a) มีคุกกี้ของพวกเขาหรืออย่างอื่น (3b) มาจากที่อยู่ IP ที่พวกเขาเคยทำ เกี่ยวข้องกับคุณ
Zack Peterson

2

ฉันจะทำเช่นนี้โดยใช้การรวมกันของคุกกี้และแฟลชคุกกี้ สร้าง GUID และเก็บไว้ในคุกกี้ หากไม่มีคุกกี้ลองอ่านจากแฟลชคุกกี้ หากยังไม่พบให้สร้างและเขียนลงในแฟลชคุกกี้ วิธีนี้คุณสามารถแชร์ GUID เดียวกันข้ามเบราว์เซอร์ได้


1

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


0

สมมติว่าคุณไม่ต้องการให้ผู้ใช้เป็นผู้ควบคุมคุณไม่สามารถทำได้ เว็บใช้งานไม่ได้สิ่งที่ดีที่สุดที่คุณหวังคือฮิวริสติกบางอย่าง

หากเป็นตัวเลือกในการบังคับให้ผู้เยี่ยมชมติดตั้งซอฟต์แวร์บางตัวและใช้ TCPA คุณอาจสามารถดึงบางสิ่งออกได้


0

โพสต์ของฉันอาจไม่ใช่วิธีแก้ปัญหา แต่ฉันสามารถให้ตัวอย่างได้ซึ่งมีการใช้งานคุณลักษณะนี้

หากคุณไปที่หน้าลงชื่อสมัครwww.supertorrents.orgใช้เป็นครั้งแรกจากคอมพิวเตอร์ของคุณก็ไม่เป็นไร แต่ถ้าคุณรีเฟรชหน้าหรือเปิดหน้าอีกครั้งมันจะระบุว่าคุณเคยเยี่ยมชมหน้านี้ ความงามที่แท้จริงมาถึงที่นี่ - มันระบุถึงแม้ว่าคุณจะติดตั้ง Windows หรือระบบปฏิบัติการอื่น ๆ

ฉันอ่านบางที่พวกเขาเก็บ CPU ID แม้ว่าฉันจะไม่สามารถหาวิธีทำได้

ฉันจะแบ่งปันอย่างแน่นอนถ้าฉันพบวิธีการทำ


www.supertorrents.org ตายแล้ว
Toolkit

0

เคล็ดลับ:

  1. สร้าง 2 หน้าลงทะเบียน:

    หน้าการลงทะเบียนครั้งแรก:ไม่มีอีเมลหรือการตรวจสอบความปลอดภัย (เพียงแค่ชื่อผู้ใช้และรหัสผ่าน)

    หน้าการลงทะเบียนครั้งที่สอง: ที่มีระดับความปลอดภัยสูง (คำขอการตรวจสอบอีเมลและภาพความปลอดภัยและอื่น ๆ )

  2. เพื่อความพึงพอใจของลูกค้าและการลงทะเบียนง่ายหน้าลงทะเบียนเริ่มต้นควรเป็น(หน้าลงทะเบียนครั้งแรก)แต่ใน (หน้าลงทะเบียนครั้งแรก)มีข้อ จำกัด ที่ซ่อนอยู่ มันเป็นข้อ จำกัด IP หาก IP พยายามลงทะเบียนเป็นครั้งที่สอง (เช่นน้อยกว่า 1 ชั่วโมง) แทนที่จะแสดงหน้าบล็อก คุณสามารถแสดง(หน้าการลงทะเบียนครั้งที่สอง) โดยอัตโนมัติ

  3. ใน(หน้าลงทะเบียนครั้งแรก)คุณสามารถตั้งค่า (ตัวอย่างเช่น: บล็อกความพยายาม 2 ครั้งจาก 1 ip เพียง 1 ชั่วโมงหรือ 24 ชั่วโมง) และหลังจาก (เช่น) 1 ชั่วโมงคุณสามารถเปิดการเข้าถึงจาก IP นั้นโดยอัตโนมัติ

โปรดทราบ: (หน้าการลงทะเบียนครั้งแรก)และ(หน้าการลงทะเบียนครั้งที่สอง)ไม่ควรอยู่ในหน้าแยก คุณทำเพียง 1 หน้า (ตัวอย่างเช่น register.php) และทำให้มันฉลาดในการสลับระหว่างสไตล์ PHP แรกกับสไตล์ PHP ที่สอง


มาห์ Jazini. ทั้งหมดถูกต้อง แต่คำถามของฉันคือวิธีที่คุณระบุที่อยู่ IP ของเครื่องไคลเอนต์ขอบคุณ
JENKINS J
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.