Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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 如何保护我的移动应用程序的云数据库?_Android_Mysql_Database_Amazon Web Services_Security - Fatal编程技术网

Android 如何保护我的移动应用程序的云数据库?

Android 如何保护我的移动应用程序的云数据库?,android,mysql,database,amazon-web-services,security,Android,Mysql,Database,Amazon Web Services,Security,我正在开发一款既有本地数据库又有AWS RDS的移动应用程序。数据需要双向传递,以便可以备份用户数据并将更新的数据发送到应用程序。我设置了一个API,以避免将数据库凭据放入应用程序本身。API触发云中托管的代码与RDS交互 据我所知,安卓APK文件很容易被黑客攻击。我想要一个解决方案,以防止有人反向工程的应用程序的API调用和获取私人用户数据的RDS。目前,如果有人知道如何格式化API调用,他们可以访问属于任何用户的数据。您需要API授权机制。通常,API受通过成功登录获得的授权令牌的保护。当用

我正在开发一款既有本地数据库又有AWS RDS的移动应用程序。数据需要双向传递,以便可以备份用户数据并将更新的数据发送到应用程序。我设置了一个API,以避免将数据库凭据放入应用程序本身。API触发云中托管的代码与RDS交互


据我所知,安卓APK文件很容易被黑客攻击。我想要一个解决方案,以防止有人反向工程的应用程序的API调用和获取私人用户数据的RDS。目前,如果有人知道如何格式化API调用,他们可以访问属于任何用户的数据。

您需要API授权机制。通常,API受通过成功登录获得的
授权令牌
的保护。当用户成功登录时,您应该发出授权令牌,存储在需要通过进一步API调用传递的设备共享首选项中。我建议在所有主要的编程语言中使用简单易用的语言。在JWT令牌中编码用户的唯一标识符,并将API设计为用户只能基于JWT中编码的标识创建、读取、更新和删除。这样,假设用户令牌被破坏,该令牌只能用于误用特定于用户的数据,而不是数据库中的所有数据

考虑给定的流程供参考。
您需要一个API授权机制。通常,API受通过成功登录获得的
授权令牌
的保护。当用户成功登录时,您应该发出授权令牌,存储在需要通过进一步API调用传递的设备共享首选项中。我建议在所有主要的编程语言中使用简单易用的语言。在JWT令牌中编码用户的唯一标识符,并将API设计为用户只能基于JWT中编码的标识创建、读取、更新和删除。这样,假设用户令牌被破坏,该令牌只能用于误用特定于用户的数据,而不是数据库中的所有数据

考虑给定的流程供参考。

您需要提供某种身份验证(可能还有授权)。你可以创建一个定制的解决方案,也可以使用谷歌的一些东西(如果你是通过官方商店分发APK的话)。我担心有人使用API获取敏感数据。后来我意识到,我可以确保在基于云的代码中请求敏感数据的任何查询都必须使用用户名和密码作为筛选器。@DanOwen您不能在每个请求中传递用户名和密码,因为您需要在每次增加数据库查询的API调用中检查用户名和密码。您可以使用由密钥签名的jwt令牌,该令牌在运行时无需db查询即可验证。谢谢Kiran,我将对此进行研究。我还是个学生,我不知道大多数事情的最佳实践!您需要提供某种身份验证(可能还有授权)。你可以创建一个定制的解决方案,也可以使用谷歌的一些东西(如果你是通过官方商店分发APK的话)。我担心有人使用API获取敏感数据。后来我意识到,我可以确保在基于云的代码中请求敏感数据的任何查询都必须使用用户名和密码作为筛选器。@DanOwen您不能在每个请求中传递用户名和密码,因为您需要在每次增加数据库查询的API调用中检查用户名和密码。您可以使用由密钥签名的jwt令牌,该令牌在运行时无需db查询即可验证。谢谢Kiran,我将对此进行研究。我还是个学生,我不知道大多数事情的最佳实践!