所以我正在制作一个应用程序,我希望用户能够添加、编辑和评价内容,但我不想强迫他们注册。相反,我计划仅使用他们的设备 ID 或设备令牌来识别他们。我计划同时制作 iPhone 和 Android 版本,因此我正在寻找通用解决方案,但 iPhone 版本具有更高的优先级,因此也欢迎 iPhone 特定的解决方案。
问题是我不希望任何人都能够通过发送虚假设备 ID 或其他人的设备 ID 来使用我的 Web 服务。
客户端如何向服务器证明它提供了正确的设备 ID?
从理论上讲,你不能。设备 ID 并不是特别保密,在大多数情况下,它很容易被欺骗。至于 Android,该操作系统上根本没有可靠的设备 ID - 请参阅此处的血淋淋的详细信息:Android 设备有唯一的 ID 吗?
您所能依赖的就是默默无闻的安全性——希望没有人有足够的决心对代码进行逆向工程并分析身份验证协议。并且不公开代码也不是一种选择 - 毕竟您正在分发该应用程序。
也就是说,一种不是特别安全的身份验证方法是 - 发送设备 ID 以及与硬编码在客户端代码字符串(共享密钥)中的秘密连接的设备 ID 的哈希值。该服务将包含密钥的副本,重新计算哈希值(使用提供的设备 ID)并匹配哈希值。协议分析无法破解,只能通过挖掘代码来获取秘密。但容易受到重放攻击。请随意混淆代码中的秘密 - e。 G。使用前将其与存放在不同位置的部件组合在一起。
要获得更强大的解决方案,请对用户进行身份验证,而不是对设备进行身份验证。这取决于您的客户,并且取决于业务的性质。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)