【问题标题】:Banning By Mobile Device?通过移动设备禁止?
【发布时间】:2013-04-23 18:14:04
【问题描述】:

我正在制作一些主要由用户驱动的应用程序,当然这意味着他们将成为麻烦制造者,他们可能会使用脏话将虚假数据输入其中,或者更糟地将有效数据更改为坏数据(即更改为脏话)

当然会采取措施试图遏制这种情况,但最终我希望可以选择禁止某人参加我的申请。

我的第一个想法是通过电子邮件地址禁止他们的帐户。我也在想,也许除了禁止他们的设备。

我的问题是,如果他们使用,我可以从他们的手机中使用什么唯一 ID

Andriod
Iphone
Blackberry
Windows Phone 7/8

它有多独特?能轻易改变吗?

【问题讨论】:

  • 'unique' 是一个不可分级的形容词。不可能限定绝对值。

标签: android iphone mobile blackberry windows-phone


【解决方案1】:

对于 Windows Phone,您应该可以使用 DeviceExtendedProperties。特别是 DeviceUniqueId 属性。

请注意,正如他们在那篇文章中所说,如果您使用设备 ID 来禁止用户,那么同一设备的任何未来用户都将被禁止使用您的应用,即使他们没有做错任何事情。

【讨论】:

    【解决方案2】:

    有 2 个标识符可以一起使用来识别特定设备和用户。

    DeviceUniqueId 和 WindowsLiveAnonymousId

    第一个是设备,如上所述,在被禁止用户之后使用该设备的任何人也将被禁止。

    WindowsLiveAnonymousId 对用户来说是唯一的。我在 3 个不同的设备上看到了相同的标识符,并且对于用户 LiveId 来说总是相同的。

    我使用以下 2 种方法来获取这些 id 来识别排行榜的游戏玩家:

    //Note: to get a result requires ID_CAP_IDENTITY_DEVICE
    // to be added to the capabilities of the WMAppManifest
    // this will then warn users in marketplace
    
    public static byte[] GetDeviceUniqueId()
    {
        byte[] result = null;
        object uniqueId;
        if (DeviceExtendedProperties.TryGetValue("DeviceUniqueId", out uniqueId)) 
            result = (byte[])uniqueId;
        return result;
    }
    
    // NOTE: to get a result requires ID_CAP_IDENTITY_USER
    //  to be added to the capabilities of the WMAppManifest
    // this will then warn users in marketplace
    
    public static string GetWindowsLiveAnonymousId()
    {
        string result = String.Empty;
        object anid;
        if (UserExtendedProperties.TryGetValue("ANID", out anid))
        {
            if (anid != null && anid.ToString().Length >= (AnidLength + AnidOffset))
            {
                result = anid.ToString().Substring(AnidOffset, AnidLength);
            }
        }
        return result;
    }
    

    它们是这样使用的:

    string deviceUniqueId = String.Empty;
    for (int i = 0; i < GetDeviceUniqueId().GetLength(0); i++)
    {
        deviceUniqueId += GetDeviceUniqueId().GetValue(i);
    }
    
    DeviceUniqueIDTextBlock.Text = deviceUniqueId;
    WindowsLiveAnonymousIDTextBlock.Text = GetWindowsLiveAnonymousId().ToString(CultureInfo.InvariantCulture);
    

    我在去年 5 月发表了一篇关于获取 WP7 系统信息的文章。此代码可在此处找到:http://www.adambenoit.com/applications/system-info-windows-phone/

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      所有这些设备都具有具有唯一 MAC 地址的网络接口,根据定义,这些地址是恒定的 - MAC 地址被烧录到硬件中,并且不能 [容易] 被欺骗,尤其是在移动设备上。我会散列 MAC 地址并将其用作密钥。一旦苹果禁止使用 UDID,iOS 上的做法就很常见了。

      【讨论】:

      • 我读过一些关于 UDID 的文章,但他们没有禁止它们。散列它只是为了保证它的安全,我猜有点像密码?我以为你代码更改了 mac 地址,但我想你说在移动设备上比在电脑上更难做。
      • 您将其散列以“匿名化”数据以及所有爵士乐。尤其是有一些关于 Apple 拥有每个人的 MAC 地址的庞大数据库等的文章。关于更改 - 如果您正在编写一个非常安全的应用程序,例如银行应用程序,我会说做其他事情(可能是一些相关的事情)到用户帐户)。对于常规应用程序,我会说这足以充当唯一标识符。
      【解决方案4】:

      我会使用 guid 方法。虽然这可以通过卸载并重新安装应用程序来规避。虽然没有什么完美的

      How to create a GUID/UUID using the iPhone SDK

      How to get GUID in android?

      如何在 Windows Phone 上创建 GUID http://msdn.microsoft.com/en-us/library/system.guid.newguid(v=vs.95).aspx

      如何在黑莓上创建 GUID http://supportforums.blackberry.com/t5/Java-Development/how-to-generate-GUID/td-p/289947

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        • 2010-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-04
        相关资源
        最近更新 更多