场景是这样的:公司内部有个签到功能,现在发现别人代签的现象比较严重,如何用asp.net获取客户端的唯一标识呢,不考虑用activex控件,网上的获取MAC地址,网卡标识等,都是获取服务器的,虚心求教解决方案,谢谢大家。
你可以使用 IP 来判断,登录后才能签到,账户名和 IP 绑定。
为了防止别人代为登录,可以使用指纹密码,这是废话,下面这招管用:
登录成功后可以看到账户的工资条。
页面签到,是针对在外实施的人,他们有的在一块儿,他们年轻小伙子内裤都可以相互借着穿,工资条。。
@魂淡: 防止不了代签,所有方法都只是增加代签的成本而已,你应该根据你的需求选择合适的方式来实现。
客户端要唯一的标识,且不要activex 那就只有IP了,
string UIP = context.Request.UserHostAddress.ToString();
前提是服务器必须是内网,这样获取到的就是局域网IP,每台电脑对应一个局域网IP,但是局域网IP是可以随便更改的啊,这样代签的人更改N次IP就把要代签的全部代签混过去了。
考虑思路2: 在每个员工的电脑上以cookies形式存储一份加密字符串(时间永久,不要让员工知道),然后每次验证cookies,验证不通过则不能签到
页签是广域网的,获取的是公共IP,你的思路2没看明白验证加密cookie怎么防止一个电脑签到2个用户,谢谢你的回答。
出于安全,ASP.NET是无法获取客户端的Mac地址的。
如果不用activex的话,我觉得你可以做个签到的客户端,例如最简单的winform调用webservice~
早上写了个activex,在chrome下运行太麻烦了,遂放弃,看来只有写winform了。
其实你也知道mac地址也是可以修改的。
每次上传一张人脸和电脑屏幕一起的照片...
...
@魂淡: 哈哈~玩笑!
其实用ip和hostName即可。Request中的属性~
当然,防作弊如果只是签到的话,还是不行的!
几百快钱买个签到设备得了,按你的要去,永远不能做到完美解决。
在外面就没法解决了,按指纹,淘宝上还有卖指模的呢。况且是Web签了