我们正在制作android应用程序,它需要从mongodb数据库中获取数据.数据库中会有很多条目,并且会经常发出请求.我们应该直接访问它还是创建一个PHP脚本,它将访问它并返回JSON中所需的结果?
我们应该直接访问它吗?
您绝对不希望将MongoDB服务器直接暴露给Android应用程序,尤其是当应用程序具有允许对数据库进行写访问的用户角色时.任何有权访问Android应用程序的人都可能会发现并提取这些凭据,如果您的Android应用程序旨在从更广泛的网络连接,则会不必要地暴露您的MongoDB服务器.您可能还打开MongoDB服务器以进行可能的拒绝服务攻击或恶意查询.
MongoDB文档有一个关于安全概念的详细部分,包括网络暴露和安全性.任何数据库部署的最佳实践是限制可以直接连接的网络地址范围.通常,直接连接应限于您的应用程序服务器和监视应用程序,这些应用程序可能托管在同一网络基础结构中.
制作一个PHP脚本,它将访问它并返回JSON中所需的结果?
是的,推荐的方法是编写自己的界面,提供合适的API和身份验证控件.您应该能够找到PHP框架和/或库,以最大限度地减少您必须编写的自定义代码的数量(例如,REST,JSON,Oauth).
您实现的界面可以:
对最终用户可以运行的查询类型设置了一些限制(仅限您提供的内容,而不是完整的MongoDB API)
允许应用程序使用适当的用户权限进行身份验证,而无需在Android应用程序中嵌入数据库凭据
添加其他用户安全性,例如基于令牌的OAuth或Twitter/Facebook身份验证
从MongoDB部署的基础结构详细信息中抽象出Android应用程序连接到的端点(您的Web界面)
可能包括常见查询或会话数据的缓存