2014-11-05 49 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爲「注入」的攻擊不太容易,但它仍然是至關重要的過濾掉任何討厭的字符,如\ {「:等等,以字符串長度限制在合理的東西,等

祝你好運!