登录时验证mac地址

tagalin 发布于 2013/02/22 11:14
阅读 1K+
收藏 1

        最近做一个项目的登录,要求用户只能用固定电脑登录,我的处理方式时验证mac地址。不知道有没有更好的方式来验证用户是否使用固定电脑登录的。

        基于我现在的处理方式,验证mac地址,在取mac地址的时候碰到问题。目前我使用了以下两种方式,均不完美:

       方式一、我项目使用的是java语言,我尝试过从web端调用dos的arp命令通过客户端的ip来获取mac地址,但是这种方式速度很慢,而且取到的mac地址非常不准确,很多时候取到的是路由的地址。

        方式二、通过js的在客户端运行activeX获取mac地址,这种方式快,并且取到的mac地址比较准确。但问题就是需要设置客户端的ie级别,这样客户使用时可能会感觉繁琐、不安全。一些不懂电脑的人甚至不懂怎么设置。针对这个问题我也做了改进,就是把本站点加入可信站点,然后对可信站点进行安全级别的设置,这样安全性更好一些。同时我也编写了注册表脚本,这样用户可以下载脚本直接运行,不用自己手动设置。

    但是在编写脚本的时候又碰到了问题,其他设置都正常,但是可信站点加不了,希望懂的朋友提点一下。我的脚本如下:inet_set.reg

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet 

Settings\ZoneMap\Domains\localhost]   
@="" 
"http"=dword:00000002

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet 

Settings\Zones\2]
"1200"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet 

Settings\Zones\2]
"1201"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet 

Settings\Zones\2]
"1405"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet 

Settings\Zones\2]
"1001"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet 

Settings\Zones\2]
"1004"=dword:00000001


加载中
0
魔力猫
魔力猫

固定电脑?MAC也是可以伪造的。

如果真的需要这种安全性,你需要专门的安全硬件来进行处理。比如专门的安全证书、同步Key等等。

魔力猫
魔力猫
回复 @tagalin : 那么你就看看开源的证书服务器一类的资源吧。不过不要想硬件了。只能用文件证书的方式,而且你们可能必须开发浏览器控件来使用证书。
tagalin
tagalin
回复 @魔力猫 : 呃~恐怕我们公司现在不会拿出这么一笔费用来弄这块。
魔力猫
魔力猫
回复 @tagalin : 需要找专门做这方面安全的公司。
tagalin
tagalin
这种的我没有弄过,不知道有没有相关的资料可以参考一下。
0
巩京京
巩京京
支付宝的证书模式,应该适合你的要求
tagalin
tagalin
这方面我不怎么懂,有相关资料推荐的吗?
ddatsh
ddatsh
+1
0
xiahao
xiahao

浏览器获取系统级别的参数本来就困难  而且你要解决多浏览器兼容的问题

以前有过相似的案例  最后使用usbkey解决

魔力猫
魔力猫
回复 @tagalin : 可以设定证书和电脑主板绑定,两者都有证书才算数。
tagalin
tagalin
usbkey只能验证用户,不能保证对电脑的验证吧?
0
JSON.org.cn
JSON.org.cn

这种方式就不对, MAC只是本地概念, 除非你的web服务器与客户机在同一个网段, 否则你的arp命令没用. 而且, 如果你只是固定电脑登陆, 完全可以在web服务器上设置主机路由, 或者中间加防火墙, 只允许某台电脑访问. 至于IP/MAC欺骗, 可以在网关上做IP-MAC-PORT的静态绑定.

0
Minho
Minho

巧了,我现在的这项目也是需要和你的功能一样。

我们之前的做法和你一样是通过js获取mac,不过这个方法只要不是小白都会伪造和绕过。

然后我采取的是另一种方法,就是写一个activex控件。在登录时调用这个控件去获取mac。

tagalin
tagalin
回复 @窦骁年华 : 嗯,谢谢啦。
Minho
Minho
回复 @tagalin : 博客园有一篇使用C#开发activeX控件的例子。你可以看看。
tagalin
tagalin
回复 @窦骁年华 :这种没弄过呢,有没有现成的可以借鉴的呢?
Minho
Minho
回复 @tagalin : 通过开发自己的activeX空间,只要客户端安装了,就没有浏览器的安全设置了。
tagalin
tagalin
回复 @窦骁年华 : 我们现在的做法也是使用activex取读取mac地址,但是这样客户端浏览器的安全级别要做相应的设置,你们是怎么处理的。
下一页
0
用户名已存在
用户名已存在
读取主板编号+其他唯一信息 做计算 
0
seatrix
seatrix
做个客户端就行了
返回顶部
顶部