(100分)关于网络安全一个对大家都很有意义的问题!网站后台如何获得来访客户端的唯一标识符,例如网卡Mac地址?我的网站程序如何知道来访问我网站的客户的MAC地址。
我想用这个MAC地址去标识来访客户身份的合法性,由于帐号密码可能会传播出去,所以我想用某种方式来限定某些电脑才是合法的访问客户。
无论是Perl,asp,jsp,php,javascript等任何方式,是否有可以满足这种需求的API?请各路高手不吝赐教!多谢。

解决方案 »

  1.   

    防君子难防小人...
    如果真需这样做(前提是网卡不被人拆来拆去^_^!),后台数据库存储经验证的MAC地址,每个客户端进行访问请求时发过来的数据包定义一个字段,内容是本机MAC地址,服务器收到后对该字段验证就是了。
    不过,天下有哪个网站是这样做的?国防部?
      

  2.   

    每个客户端进行访问请求时发过来的数据包定义一个字段,内容是本机MAC地址?
    -------------------------------------------------------------------------
    怎么取MAC?
      

  3.   

    获取本机的MAC地址   在Windows 9X系列的计算机系统:依次单击“开始”→“运行”→输入“winipcfg”→回车,其中适配器地址就是计算机的MAC地址。   在Windows 2000/XP的计算机系统中,依次单击“开始”→“运行”→输入“cmd”→回车,在出现的命令提示符界面中输入“ipconfig /all”→回车,可以得到计算机的MAC地址。其中Physical Address就是计算机的MAC地址。   另外,在所有系统中,获取MAC地址还有另外一种较特别的方法,这种方法无须在命令行提示符下键入命令,无须牢记复杂的命令。只要鼠标轻点几下即可。方法是:鼠标依次点击“开始→所有程序→附件→系统工具→系统信息”在“系统摘要”下,展开“组件→网络→适配器”,右边的摘要中就会列出本机的MAC 地址。   如果您在线,还可以用以下方法查MAC地址:首先启动IE连接到网络,鼠标右击任务栏中托盘区中的网络连接图标(两台小电脑),点选“状态”→“支持”选项卡下的“详细信息”,其中的实际地址即为您网卡的MAC地址.  查看局域网远端计算机的MAC地址   我们也可以使用命令查看局域网远端计算机的MAC地址,在命令提示符界面输入:nbtstat -a ip地址/计算机名,其中提示行最底端的MAC Address就是计算机的MAC地址。
    JAVA下面还不知道如何取,但是PERL是可以的
    #!/bin/bash IP12=192.168. IP3=0 
    while (( $IP3 < 1 )) 
    do 
    IP4=1 
    while (( $IP4 < 255 )) 
    do 
    IP="$IP12$IP3.$IP4" 
    MAC="00:00:00:00:00:00:00" 
    IP4=`expr $IP4 + 1` 
    done 
    IP3=`expr $IP3 + 1` 
    done fi 可以用JAVA调用
      

  4.   

    这个帖子里面有取MAC的java代码http://community.csdn.net/Expert/topic/4871/4871294.xml?temp=.4249384
      

  5.   

    kingdoom(坚持):
    老实说没有太看懂你的代码。好像你就是通过IP地址在弄Mac地址?好像这两者没有什么直接关系吧?
      

  6.   

    jlusdy(边城浪子) :
    我是想取来访我网站的客户的电脑MAC地址~~
      

  7.   

    MAC地址本身也是不能保证的,因为现在的操作系统在第一次读取网卡后都会把MAC保存起来(windows是保存在注册表里),这样很容易修改。
    而且HTTP协议本身就是无状态的!你想在无状态的应用中使用这些东西无异于隔靴搔痒。
    你可以考虑电子证书
      

  8.   

    sorry,没仔细看B/S结构没听说过能做这个C/S还行
      

  9.   

    你说的是要保证访问者的真实身份问题,那最好用数字签名,访问者的身份通过数字证书来提供,其实使用SSL不就解决了上面的问题吗
      

  10.   

    cathy97(男人练瑜伽好处多):
    我不是太懂ssl和数字证书,按我的理解,如果使用这种方式的话,如果客户把他的私钥或者证书给了别人,那么别人是不是也可以像该客户一样登录上我的网站呢?
    如果可以的话,那就还没有达到目的哦。我是否可以定制数字证书里的信息?例如我加入一些根据电脑的MAC地址、硬盘、CPU等编号产生的md5信息什么?
      

  11.   

    Garriot(自由枪骑兵) :
    疑问同上楼,谢谢。
      

  12.   

    原来楼主的意思是只允许某一部分特定的机器来访问你的web么?
    我觉得用这些语言来实现毫无意义,因为这根本就属于网络硬件的范畴了
    通过路由器,通过防火墙或安全策略就能实现,无需对网站后台进行任何
    的限定。
      

  13.   

    其实MAC玛在通过某些路游器的时候是会发生变化的,所以你网站读取到的MAC码不同你在本机上面看到的MAC码的,如果是在局域网上是可以实现服务端获取客户端MAC码的,一些内部网站也是通过这个来进行一个权限的设置的,MAC的或者可以通过一个JAVA程序段实现的
      

  14.   

    服务器收到的MAC地址只是最后一站路由器的MAC,而不是最初客户端的MAC,直到tcp/ip协议的应该都了解这一点
      

  15.   

    wtucel(仇)说得很对,这是最好的办法
    如果数字签名可以被窃取的话,就真的没有别的办法了。若有的东西都是防君子不防小人的。如果非要internet,B/S的话,你可以借鉴一下现在网络银行的做法。他们在使用的时候都会要求下载一个控件(java还可以使用applet),这个控件是可以对你的计算机进行操作的,你可以把安全验证放在这里面。招行的个人银行就是先下载控件,然后生成电子证书,最后进行验证登陆
      

  16.   

    哈,你们学JAVA的真是好奇怪,网卡MAC也可以自己设置的啊,记录下来有什么用?
    我是VB版的,只要你修改
    SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\00**(1-10)下的NetworkAddress键值,就能修改8139网卡的MAC。