ที่อยู่ MAC ใน JavaScript


105

ฉันรู้ว่าเราสามารถรับที่อยู่ MAC ของผู้ใช้ผ่านทาง IE (วัตถุ ActiveX)

มีวิธีรับที่อยู่ MAC ของผู้ใช้โดยใช้ JavaScript หรือไม่?

คำตอบ:


60

ฉันเห็นด้วยกับคำตอบทั้งหมดก่อนหน้านี้ว่ามันจะเป็นช่องโหว่ด้านความเป็นส่วนตัว / ความปลอดภัยหากคุณสามารถทำได้โดยตรงจาก Javascript มีสองสิ่งที่ฉันคิดได้:

  • ใช้ Java (ด้วยแอพเพล็ตที่ลงนาม)
  • ใช้ Javascript ที่ลงชื่อซึ่งใน FF (และ Mozilla โดยทั่วไป) จะได้รับสิทธิ์สูงกว่า JS ปกติ (แต่การตั้งค่าค่อนข้างซับซ้อน)

1
ฉันอยากรู้ว่าเราสามารถรับข้อมูลเฉพาะเช่นที่อยู่ mac หรือหมายเลขซีเรียลหรืออะไรทำนองนั้นจากผู้ใช้ผ่าน JavaScript ได้หรือไม่ หรือชื่อพีซี?
Flamur Beqiraj

57

คำตอบที่ง่ายและรวดเร็วคือไม่

Javascript เป็นภาษาระดับสูงและไม่มีสิทธิ์เข้าถึงข้อมูลประเภทนี้


แล้วผลการค้นหาของ Google ทั้งหมดที่ให้รหัสตัวอย่างเพื่อรับที่อยู่ MAC
Moon

14
ฉันได้ดู Google อย่างรวดเร็วและทุกหน้าที่ฉันอ่านเป็นโซลูชันเดียวของ IE ที่อาศัยการใช้วัตถุ ActiveX หากคุณสามารถโพสต์ลิงก์ที่แสดงเป็นอย่างอื่น ...
GateKiller

27
ฉันไม่คิดว่าการเป็น "ภาษาระดับสูง" จะเกี่ยวข้องกับที่อยู่ MAC เนื่องจากภาษาการเขียนโปรแกรมฝั่งเซิร์ฟเวอร์ใด ๆ ทำให้คุณสามารถเข้าถึงตาราง ARP ได้แม้โดยทางอ้อม (เช่นผ่านกระบวนการย่อย) ฉันคิดว่า "ภาษาฝั่งไคลเอ็นต์" จะทำงานได้ดีกว่า ...
kirbyfan64sos

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

33

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

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

หากคุณต้องการทราบที่อยู่ MAC ของคอมพิวเตอร์จริงๆและคุณกำลังพัฒนาสำหรับแอปพลิเคชันภายในฉันขอแนะนำให้คุณใช้ส่วนประกอบภายนอกเพื่อทำเช่นนั้น: ActiveX สำหรับ IE, XPCOM สำหรับ Firefox (ติดตั้งเป็นส่วนขยาย)


คุณรู้จักส่วนประกอบภายนอกสำหรับ Safari หรือไม่?

ไม่จริงฉันแนะนำให้สร้างขึ้นมา
Vincent Robert

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

2
@ Michael Wikipedia แสดงการใช้งาน UUID
Vincent Robert

7

ไม่ เหตุผลที่ ActiveX ทำได้ก็เพราะว่า ActiveX เป็นแอปพลิเคชั่นเล็ก ๆ น้อย ๆ ที่ทำงานบนเครื่องของลูกค้า

ฉันคิดว่าการเข้าถึงข้อมูลดังกล่าวผ่าน JavaScript จะเป็นช่องโหว่ด้านความปลอดภัย


4

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


3

ฉันกำลังมองหาปัญหาเดียวกันและสะดุดกับรหัสต่อไปนี้

วิธีรับที่อยู่ MAC ของไคลเอ็นต์ (เว็บ):

ในการรับที่อยู่ MAC ของไคลเอ็นต์วิธีเดียวที่เราสามารถพึ่งพา JavaScript และ Active X control ของ Microsoft ใช้ได้เฉพาะใน IE หากเปิดใช้งาน Active X สำหรับ IE เนื่องจาก ActiveXObject ไม่สามารถใช้ได้กับ Firefox จึงไม่ทำงานกับ firefox และทำงานได้ดีใน IE

สคริปต์นี้มีไว้สำหรับ IE เท่านั้น:

function showMacAddress() {
    var obj = new ActiveXObject("WbemScripting.SWbemLocator");
    var s = obj.ConnectServer(".");
    var properties = s.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration");
    var e = new Enumerator(properties);
    var output;
    output = '<table border="0" cellPadding="5px" cellSpacing="1px" bgColor="#CCCCCC">';
    output = output + '<tr bgColor="#EAEAEA"><td>Caption</td><td>MACAddress</td></tr>';
    while (!e.atEnd()) {
        e.moveNext();
        var p = e.item();
        if (!p) continue;
        output = output + '<tr bgColor="#FFFFFF">';
        output = output + '<td>' + p.Caption; +'</td>';
        output = output + '<td>' + p.MACAddress + '</td>';
        output = output + '</tr>';
    }
    output = output + '</table>';
    document.getElementById("box").innerHTML = output;
}

showMacAddress();
<div id='box'></div>

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