2014-11-05 67 views
1

我是新来的webapps,所以我很抱歉,如果这个问题似乎天真​​,只是想学习。我正在研究使用elasticsearch进行自动完成。我所见过的所有例子都展示了jQuery/ajax/angularjs的一些形式,它将弹性搜索网址暴露给用户,这看起来很糟糕。什么是保护服务器url的正确方法,同时仍允许ajax打电话(即使间接)?如何安全Elasticsearch当使用AJAX

+0

没有什么是安全的与js,都是可见的,你只能尝试使它更难解码。最好的方法是调用你自己的服务器与ajax,它调用elasticSearch url并返回结果。你只是不想弹性搜索网址显示,只有你的服务器网址 – juvian 2014-11-05 21:42:11

回答

1

在AJAX世界里,没有办法保护服务器的URL。没关系;无论如何,默默无闻的安全措施并不是一个好的做法。你需要做的是确保你的服务器不能通过这个URL被黑客入侵。几个提示:

  1. 禁用ES中的脚本。新版本的ES在默认情况下禁用它。

  2. 不要将裸露的ES服务器暴露给世界。默认情况下,ES在端口9200上可用,这意味着任何人都可以运行任何查询(或执行其他任何他们想要的操作)。确保端口被阻止外部访问。正如一位评论者指出的那样,Javascript应该调用你的服务器,而服务器又应该调用ES服务器作为本地主机(再次确保localhost:9200被外部访问阻止)或防火墙后面。

  3. 清除所有输入查询,然后将它们传递给ES。 ES为SQL为“注入”的攻击不太容易,但它仍然是至关重要的过滤掉任何讨厌的字符,如\ {“:等等,以字符串长度限制在合理的东西,等

祝你好运!