elasticsearch,Php,Ajax,Amazon Web Services,elasticsearch" /> elasticsearch,Php,Ajax,Amazon Web Services,elasticsearch" />

Php 使用Elasticsearch的AJAX通信流量和访问控制解决方案? 情况:

Php 使用Elasticsearch的AJAX通信流量和访问控制解决方案? 情况:,php,ajax,amazon-web-services,elasticsearch,Php,Ajax,Amazon Web Services,elasticsearch,对于一个网络商店,我想使用Elasticsearch构建页面化的产品列表——以及这些列表上的过滤器。我想绕过应用程序完全运行的PHP/MySQL服务器,通过AJAX调用直接从客户的浏览器与Elasticsearch通信。优点是: PHP/MySQL服务器上的大部分负载将由ES集群处理 CDN机会(扩展!) 问题: 这种方法会减轻后端服务器的大量负载,但会产生一些新问题。匿名用户将生成大量请求,但我们需要对这些请求进行一些控制: 交通管制: 如何防范恶意用户通过这种方式拨打大量电话并扫描/下

对于一个网络商店,我想使用Elasticsearch构建页面化的产品列表——以及这些列表上的过滤器。我想绕过应用程序完全运行的PHP/MySQL服务器,通过AJAX调用直接从客户的浏览器与Elasticsearch通信。优点是:

  • PHP/MySQL服务器上的大部分负载将由ES集群处理
  • CDN机会(扩展!)
问题: 这种方法会减轻后端服务器的大量负载,但会产生一些新问题。匿名用户将生成大量请求,但我们需要对这些请求进行一些控制:

交通管制:

  • 如何防范恶意用户通过这种方式拨打大量电话并扫描/下载我们的整个产品目录?(例如,竞争性刮削定价信息)
  • 如何阻止(不知何故)被确定为行为不好的IP
访问控制:

  • 如何确保前端只能进行我们希望允许的查询
  • 如何确保客户只看到结果字段的选择,而不能从ES中获取任何不适合他们的数据
重要的是不要让一台机器在某个地方处理所有这些事情,因为这只会重新创建一台负责处理所有事情的机器。我想真正利用ES集群,而不需要任何中间件来处理扩展问题

我们不想完全依赖第三方,我们正在寻找一种解决方案,该解决方案在与我们合作的合作伙伴方面具有一定的灵活性(例如,在elastic和AWS之间切换)

可能的解决方案或部分解决方案: 我一直在考虑一些“Elasticsearch作为一项服务”选项,但我对它们的质量没有信心,甚至对我是否能够解决它们提到的问题也没有信心:

  • www.elastic.co/found,他们的高级解决方案有一个“屏蔽”服务,它似乎不涵盖上述所有情况(据我所知,只有IP阻塞),但有一个自定义插件()这可以对结果字段进行过滤,并提供一种进行用户管理等的方法。这似乎是一个合理的选择,但成本很高,并将应用程序与“找到的”产品联系起来。如果需要,我们应该能够交换合作伙伴
  • Amazon AWS Elasticsearch服务具有基本的IAM支持,可以将CloudFront置于其前面,但不提供任何访问控制
  • 安装单独的L7应用程序过滤解决方案,用于检测刮刀等
问题:
是否有人采用这种方法并找到了解决所有这些问题的良好设置?

我建议的第一件事是限制从安全组后面访问弹性搜索实例,并且只允许在端口22、80、9200上访问应用服务器IP地址,和9300,这是ElasticSearch使用的端口

至于防止报废,没有绝对的保护解决方案,但是,如果您的目的只是限制这些报废程序在您的应用程序服务器和ES实例上的负载,那么您可以查看针对速率受限用户的,他们在页面上使用的exmaple限制为每秒5次请求,这对于普通用户来说似乎非常合理,如果需要进行费时的工作,则可以进一步降低请求量。

我建议您看看,这是一款由Elastic公司的员工开发的商业产品。它应该负责您想要设置的大多数控件。