Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.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
Android 这是保护移动API的实用方法吗?_Android_Ios_Api_Security_Encryption - Fatal编程技术网

Android 这是保护移动API的实用方法吗?

Android 这是保护移动API的实用方法吗?,android,ios,api,security,encryption,Android,Ios,Api,Security,Encryption,我正在构建一个用于日志分析的移动API和库,并一直在探索保护API的不同方法,以防止不必要的第三方记录数据或拦截用户数据 我建议的方法是使用公钥加密:用户将在API的网站上生成密钥,并获得公钥/私钥。然后,用户将手动将密钥存储在应用程序代码中,例如,在Android中,它可以是一个字符串资源文件。当应用程序运行时,库将读取用户在代码中提供的密钥,加密分析数据,并将其发送到服务器,在服务器上解密和读取 经过研究,我发现了这种方法的几个问题,最明显的是第三方可以反编译应用程序并获得存储的密钥(不知何

我正在构建一个用于日志分析的移动API和库,并一直在探索保护API的不同方法,以防止不必要的第三方记录数据或拦截用户数据

我建议的方法是使用公钥加密:用户将在API的网站上生成密钥,并获得公钥/私钥。然后,用户将手动将密钥存储在应用程序代码中,例如,在Android中,它可以是一个字符串资源文件。当应用程序运行时,库将读取用户在代码中提供的密钥,加密分析数据,并将其发送到服务器,在服务器上解密和读取

经过研究,我发现了这种方法的几个问题,最明显的是第三方可以反编译应用程序并获得存储的密钥(不知何故?)。然而,这似乎只是为了获得分析的密钥而付出了大量的努力,因为该密钥只包含匿名信息。我还记得读到另一个大型开发人员(Twitter?)使用了类似的方法,并在应用程序版本之间更改了密钥

另一种方法是将用户连接到服务器,进行身份验证,然后为会话分发密钥。但是,我的应用程序没有唯一标识和验证单个用户的功能(没有用户帐户和密码),因此我仍然需要存储身份以进行身份验证


我真的希望API用户能够实现一个简单易用的解决方案,比如复制一个加密密钥,并且不会因为网络流量过大而导致身份验证、管理会话、分发密钥等。我想知道Fabric和Firebase等现有服务是如何做到这一点的。

使用https rest API、ios ATS(应用程序传输安全)为什么你不能使用TLS?OAuth 2是一个合适的方法吗?我已经读到它包含了TLS,并且被谷歌的许多API使用,但是我仍然不确定如何将“凭据”包含到应用程序中,因为在用户设备上运行的应用程序的每个实例都没有用户定义的唯一标识。没有用户名或密码。我可以单独使用e应用程序的每个实例中使用的用户名和密码,但是,以同样的方式使用公钥加密似乎不太安全。