我制作了一个ios应用程序,将ElasticSearch作为数据库。由于ES公开了一个http api,从技术上讲,我可以让客户端直接与数据库通信,而无需通过应用服务器进行路由。我绝不会在Javascript中这样做,因为用户可以查看源并查看凭据。由于ios / android应用程序已编译且用户无法查看其源代码,因此让应用程序直接与数据库对话是否安全或是否存在任何其他问题?
答案 0 :(得分:1)
通过默默无闻的安全性(通过不在JavaScript中隐藏API调用)永远不是答案。什么阻止某人通过WireShark或其他类似软件嗅探流量,然后以这种方式映射您的API?
你永远不应该让你的Elasticsearch安装对外界可见,ES是围绕搜索而不是安全构建的。
如果要正确安全地执行此操作,您必须构建一个包含身份验证的包装器。这个的主要原因是(你甚至自己说过)Elasticsearch是一个数据库,有点,你现在不会让你的数据库公开面对你。
作为旁注,有https://github.com/sonian/elasticsearch-jetty但我从未使用它,因此无法推荐它。我会坚持使用包装......