iphone - 每个设备是否可以进行一次试用?

标签 iphone android security

是否可以提供一种服务,在这种服务中,每台设备都可以免费试用一次,而个人不可能在一台设备上获得多次免费试用。如果不可能,您是否知道有一种方法可以让您难以获得多次免费试用。

最佳答案

您可以根据设备的唯一 ID、请求日期和您自己的私钥生成许可证 key ,以创建仅在特定日期之前有效的许可证。

您的应用程序将通过使用您的公钥解码许可证 key 并比较其到期日期和设备 ID 来验证许可证 key 是否有效。人们无法伪造虚假请求,因为许可证 key 仅在规定的日期和给定的设备 ID 内有效。

(提示:阅读公钥密码学)

然而,这并非万无一失。一个真正下定决心的攻击者可以获取他的设备的 root 权限,并安装一个允许他控制由“getDeviceId()”返回的标识符的自定义固件。这不是大多数人愿意做的事情,大多数人宁愿找到一个替代的免费应用程序或只是购买应用程序而不是走那条路。面对具有这种决心和技能的 cookies ,您无能为力。

另一种攻击途径是用攻击者的私钥/公钥组合替换您随应用程序一起提供的公钥,他可能会编写一个 key 生成器来为伪造的应用程序生成许可证 key 。您可以通过 self 验证您自己的可执行文件来使这种攻击变得困难。

但是,没有任何安全方案是万无一失的,java/android 应用程序可以被逆向工程,并且坚定的黑客可以伪造您的应用程序并禁用其许可证检查。防止未经授权使用应用程序的唯一万无一失的方法是根本不分发该应用程序。

关于iphone - 每个设备是否可以进行一次试用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4342294/

相关文章:

android - 如何访问android中的url返回数据

security - 如何从 Windows Vault 凭据管理器存储和检索凭据?

iphone - Objective-C : is it possible to detect QR code data type?

iphone - Objective-C - 在 NSAttributedString 中插入字符串?

iphone - numberofRowsinSection 可以返回 NSMutableArray 的值吗?

python - 如何关闭 Boto S3 连接?

angular - SPA 使用的经过身份验证的 Rest API : how to get CSRF token for login and registration forms?

ios - 我的开发人员退出,如何编辑并继续开发 ipa 文件(Half Built iOS App)

android - Jelly Bean Plus 中的演示类未拦截 onTouchEvent

java - 这个 SQLITE db.insert 可以组合或改进吗?