Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa touch 无登录客户端/服务器体系结构(iOS)_Cocoa Touch_Security_Web Applications_Ssl_Login - Fatal编程技术网

Cocoa touch 无登录客户端/服务器体系结构(iOS)

Cocoa touch 无登录客户端/服务器体系结构(iOS),cocoa-touch,security,web-applications,ssl,login,Cocoa Touch,Security,Web Applications,Ssl,Login,我目前正在计划一个涉及无登录服务的项目 用户将通过在客户端(ios)上创建的唯一设备id进行标识 安全问题是什么?防止攻击的常见模式是什么 套接字将使用ssl进行包装 是否创建专用证书来验证客户端?(如果有人反编译二进制文件并获取它呢?) 任何想法都值得赞赏在这种情况下,谁是“攻击者”?您是在保护用户不受攻击,还是将用户视为攻击者?任何将用户视为攻击者的方案都是DRM方案,而不是安全方案。安全性和DRM有完全不同的问题,DRM问题是无法解决的。它只能通过不断的努力和修补来缓解 在iOS中创建

我目前正在计划一个涉及无登录服务的项目

用户将通过在客户端(ios)上创建的唯一设备id进行标识

安全问题是什么?防止攻击的常见模式是什么

  • 套接字将使用ssl进行包装
  • 是否创建专用证书来验证客户端?(如果有人反编译二进制文件并获取它呢?)
任何想法都值得赞赏

在这种情况下,谁是“攻击者”?您是在保护用户不受攻击,还是将用户视为攻击者?任何将用户视为攻击者的方案都是DRM方案,而不是安全方案。安全性和DRM有完全不同的问题,DRM问题是无法解决的。它只能通过不断的努力和修补来缓解

在iOS中创建唯一的id很简单(请参见
CFUUIDCreate
),但它只与特定安装相关,而不与设备相关。如果用户删除了该程序,而您没有将UUID保存到其他地方(比如iCloud),那么下次您创建UUID时,它将不同

可以对用户进行身份验证。他们脑子里有秘密。像iPHone这样的通用设备无法通过授权用户无法伪造的方式进行身份验证。这是一种非常复杂的说法,说明越狱问题无法解决,如果你不是苹果,就不值得花太多钱去解决。(他们花在阻止越狱上的钱要比你整个开发预算中可能花的钱多得多,而且他们无法阻止越狱;你不可能再做更好的事情了。)

有一些方法可以弱识别设备。特别是你可以使用MAC地址。苹果很有可能在将来会把它拿走。他们已经取消了唯一识别设备的其他方法,因为它们太容易被滥用来监视用户

创建一个私有证书来验证用户是非常棒的。验证程序?这只是混淆,如果你的程序值得麻烦,它会很快被删除

这个一般性的话题已经讨论过很多次了。请参阅以下链接,以了解其中几个讨论。如果您有之前未涉及的更具体问题,请告知我们


也发布在上。谢谢@Rob,我担心有人修补api后端并操纵用户偏好。一个可能的解决方案是在第一次遇到服务时生成一个随机令牌作为不在场证明密码。UUID+随机令牌应该足够了——因为如果用户删除应用程序,我不需要重新验证。在这个场景中,问题是如何确定用户重置是否合法。UUID已经包含一个随机令牌,所以这可能就足够了。它的设计是独特的,同时很难猜测。如果您正在保护用户的信息,那么这就足够了。我可能会使用iCloud存储您的UUID,这样您就不必担心重置。这有效地让苹果为你做所有的认证工作。那么不使用iCloud的用户呢?在这种情况下,可能没有真正好的方法来可靠地识别设备。有类似的工具,如备份(这样您就不会丢失设置)和游戏中心。但是每个工具最终都会以“但他们可能没有”结尾。对于这些工具,您可能需要通过电子邮件请求单独重置用户。这通常比自动化解决方案更安全。你只想让它保持在一个非常罕见的发生。