每台计算机的唯一闪存 ID

Posted

技术标签:

【中文标题】每台计算机的唯一闪存 ID【英文标题】:Unique flash ID per computer 【发布时间】:2014-08-05 16:01:00 【问题描述】:

我使用 Adob​​e flash Professional 创建了一个在线多人纸牌游戏。在这个游戏中,不允许多个客户端/帐户,因此我需要检测用户是否从不同的设备加入游戏。我不能简单地对 IP 地址进行服务器端检查,因为我仍然想要例如同一办公室的人可以一起玩。

我找到了一些解决方案,例如读取 MAC 地址 (Here),但问题是 NetworkInfo.networkInfo.findInterfaces() 仅适用于 Adob​​e air,这不是我的情况。

另一个解决方案可能是使用浏览器 cookie,但这个解决方案的问题是,用户可以使用例如Chrome 和 Firefox 在同一台计算机上。

作为一个网页游戏,使用js也可以解决,所以我把这个问题也标记为js。

更新

在这种情况下使用 SharedObject 不起作用,因为 google chrome 使用自己的存储。

任何建议将不胜感激。

【问题讨论】:

这里是一个使用 SharedObject 的例子(flash player cookie 等价物):***.com/questions/15667848/… 在这种情况下使用 SharedObject 不起作用,因为 google chrome 使用自己的存储空间。 然后使用 openId/OAUTH(例如,使用 google/facebook/twitter 按钮登录)然后将该提供商 ID 存储在数据库中,作为密切关注您的用户的一种方式。 其实这是一个 Facebook 应用,但问题是客户可以创建多个 Facebook 帐户,这就是我们要防止作弊的原因。 嗯,没有可靠的方法来跟踪使用网络技术的设备。主要是设计使然(例如 MAC 地址)。即使有 Chrome(可能还有 Metro IE)限制,Flash 共享对象仍然可能是您的最佳选择。 【参考方案1】:

您可以使用“flash cookie”代替浏览器 cookie - SharedObject。它非常简单,具有类似于浏览器 cookie 的机制,但存储在闪存本地存储中。

更新

例子:

var mySo:SharedObject = SharedObject.getLocal("host"); // get saved SO with name "host" if exists or create new if doesn't exist
mySo.data = someProperty: "someData"; // writing some data
var flushResult:Object = mySo.flush(); // saving data in local storage
...
var savedSO:SharedObject = SharedObject.getLocal("host");
trace(savedSO.data.someProperty); // output: someData

【讨论】:

感谢您的回答,但恐怕 Google Chrome 的闪存本地存储有所不同。您可以在此链接上查看示例:republicofcode.com/tutorials/flash/as3sharedobject try to move a object in chrome, and reload the page using another browser.

以上是关于每台计算机的唯一闪存 ID的主要内容,如果未能解决你的问题,请参考以下文章

为每台计算机生成一个静态唯一 ID,而不将其本地存储在 ActionScript 中

IP地址

IP地址与子网掩码

Ip 地址 及 网络配置

网络管理--IP地址规划

liunx四周目之网络基础