Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.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
如何验证从iphone应用程序到web服务的请求的真实性_Iphone_Web Services_Authentication - Fatal编程技术网

如何验证从iphone应用程序到web服务的请求的真实性

如何验证从iphone应用程序到web服务的请求的真实性,iphone,web-services,authentication,Iphone,Web Services,Authentication,我想从iphone应用程序向我构建的web服务发出请求。我如何验证向web服务发出的请求是否来自我的iphone应用程序(或任何授权来源),并且不是伪造的 我已经研究了HTTPS上的基本身份验证,但将凭据烘焙到应用程序中是否安全 这个问题并不是针对iphone的;一般来说,我想知道如何保护和验证请求。理论上,如果您希望连接安全,最好是让客户端使用证书对其请求进行签名。关于这一点,有多种资源。在谷歌上寻找“客户证书” 是Java语言,但无论使用哪种语言,其概念都是相似的 PS:显然,这并不妨碍您使

我想从iphone应用程序向我构建的web服务发出请求。我如何验证向web服务发出的请求是否来自我的iphone应用程序(或任何授权来源),并且不是伪造的

我已经研究了HTTPS上的基本身份验证,但将凭据烘焙到应用程序中是否安全


这个问题并不是针对iphone的;一般来说,我想知道如何保护和验证请求。

理论上,如果您希望连接安全,最好是让客户端使用证书对其请求进行签名。关于这一点,有多种资源。在谷歌上寻找“客户证书”

是Java语言,但无论使用哪种语言,其概念都是相似的

PS:显然,这并不妨碍您使用其他身份验证方法,如密码等


PPS:请记住,如果有人设法从您的申请中提取证书,则无论哪种方式,您都会失败;-)。您可以想象一个商店为每个应用程序提供一个单独的证书,并使受损的证书无效。

可以通过显示您知道的、您拥有的、您是的或三者的组合来断言身份验证

iPhone没有视网膜或指纹扫描仪,因此没有“你是什么”选项

客户机证书作为“您拥有的东西”标记很好地工作。大多数智能卡的工作原理是使用嵌入式证书对消息进行签名。当证书遭到破坏时,可以将其放入Web服务器引用的证书吊销列表(CRL)中。显然,你不想将应用程序的嵌入式证书放在CRL中——这会拒绝所有用户的访问。相反,您希望用户将个人证书下载到他们的iPhone上

在那之后,就需要监控异常行为,找到不良行为人,并将这些证书添加到CRL中。两个死赠品将是一次发送太多请求的客户端,或者在太短的时间内从太多不同的IP发送太多请求的客户端

登录/密码是一个简单的“您知道的东西”标记。与证书一样,登录/密码组合可能会受到影响,并且可以设置类似的监视以发现不适当的行为。区别在于,受损账户将被标记为“阻止”,而不是添加到CRL中

通过同时要求客户端证书和登录/密码,您可以增加泄露帐户所需的工作量

当然,您必须确保只将有效帐户添加到数据库中。如果有一种自动创建新帐户和相应的客户端证书的方法,那么帐户创建服务器/进程将成为坏参与者创建可行的、未经授权的帐户的最简单方法。要求一个真实的人在账户上签字取消了自动化过程,但这意味着不满或腐败的员工可能会创建无效的账户。要求第二个人对账户进行反签名会使一个人更难成为内部威胁


简言之,确保客户的高度完整性是一个可以任意复杂和昂贵的过程。您决定部署哪些工具和流程作为身份验证方案,必须根据它所保护的内容的价值进行平衡。

感谢您提供全面且书面的答案