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
在iOS代码中嵌入API凭据_Ios_Security - Fatal编程技术网

在iOS代码中嵌入API凭据

在iOS代码中嵌入API凭据,ios,security,Ios,Security,我必须从iOS代码调用支付网关API。问题是它需要商家凭证,我觉得在代码中嵌入商家凭证是不安全的。如果有人以某种方式对代码进行反向工程并获得凭据,那么客户端就死了。有什么建议吗 我发现这篇文章说苹果默认对应用程序二进制文件进行加密。这是否意味着我可以安全地将凭据嵌入代码中?否!与其将凭据添加到iOS应用程序中,不如考虑设置一个服务器来处理与API的交互,您所说的是,让应用程序只与您的服务器交互。因此,您可以将API密钥存储在服务器上,并可以限制用户在服务器端可能执行的操作(这将很难被滥用)。否。

我必须从iOS代码调用支付网关API。问题是它需要商家凭证,我觉得在代码中嵌入商家凭证是不安全的。如果有人以某种方式对代码进行反向工程并获得凭据,那么客户端就死了。有什么建议吗


我发现这篇文章说苹果默认对应用程序二进制文件进行加密。这是否意味着我可以安全地将凭据嵌入代码中?

否!与其将凭据添加到iOS应用程序中,不如考虑设置一个服务器来处理与API的交互,您所说的是,让应用程序只与您的服务器交互。因此,您可以将API密钥存储在服务器上,并可以限制用户在服务器端可能执行的操作(这将很难被滥用)。

否。永远不要在未加密的代码(字符串、plists)中嵌入关键资源。PLIST不仅是简单的捆绑资源(例如未加密),而且Objective-C代码的动态特性意味着它可以很容易地进行反向工程。再加上
const NSStrings*
是在二进制级别缓存的,那么你有什么建议?我要加密凭证并将其放入plist文件中吗。假设加密算法和密钥在代码中并且是安全的,因为二进制文件是由apple加密和签名的,并且类不能反向工程。或者别的什么?实际上没有一种方法可以嵌入凭证,使其无法被决心获取凭证的人恢复。我还看到人们认为用HTTPS传输机密可以保证他们的安全,但事实并非如此,因为你可以使用Charles这样的代理,它可以让你记录网络流量(你必须在设备上安装一个证书,这样它才能信任代理)。这难道不就是一个麻烦吗?那么,您如何确保您的应用程序是唯一可以向混合中的新服务器发出请求的应用程序?否。如果您获得了该服务的API密钥,您就可以使用该服务执行所有可能的操作。如果将密钥存储在服务器上,服务器软件会限制可以执行的操作。如果您的服务也使用身份验证,您还可以发现有人试图滥用您的服务。这是一个很好的观点。这似乎是一个很好的风险缓解措施,特别是对于授予“一揽子”密钥的服务,您可以执行用户可能授权执行的任何操作,而实际上您的应用程序只需要执行其中的一部分。