2014-11-05 5 views
1

Я новичок в webapps, поэтому прошу прощения, если этот вопрос кажется наивным, просто ищет, чтобы учиться. Я изучаю использование elasticsearch для автозаполнения. Все примеры, которые я видел, показывают некоторую форму jquery/ajax/angularjs, которая предоставляет URL-адрес elasticsearch пользователю, который кажется плохой практикой. Каков надлежащий способ защиты URL-адреса серверов, но все же позволяет ajax совершать вызов (даже если это косвенно)?Как защитить Elasticsearch При использовании ajax

+0

Ничего не безопасно с помощью js, все видно, вы можете только попытаться сделать его более трудным для декодирования. Лучший способ - вызвать собственный сервер с помощью ajax, который вызывает URL-адрес elasticSearch и возвращает результат. вы просто не хотите, чтобы elasticsearch url отображался, только ваш URL-адрес сервера будет – juvian

ответ

1

В мире AJAX нет способа защитить URL-адрес сервера. И это нормально; В любом случае безопасность от неясности не является хорошей практикой. Что вам нужно сделать, так это убедиться, что ваш сервер не может быть взломан через этот URL. Несколько советов:

  1. Отключить скрипты в ES. Новые версии ES по умолчанию отключены.

  2. Не подвергайте ваш голый ES-сервер миру. По умолчанию ES доступен на порту 9200, что означает, что любой может запускать любой запрос (или делать что-то еще, что им нужно). Убедитесь, что порт заблокирован от внешнего доступа. Как отметил один из комментаторов, Javascript должен вызывать ваш сервер, который должен, в свою очередь, вызывать ES-сервер как localhost (опять же, убедитесь, что localhost: 9200 заблокирован от внешнего доступа) или за брандмауэром.

  3. Очистить все входные запросы перед передачей их в ES. ES менее уязвима, чем SQL в «инъекции» атак, но он по-прежнему важно отфильтровать любые неприятные символы, такие как \ { ": и так далее, чтобы ограничить длину строки на что-то разумное, и т.д.

Удачи!

Смежные вопросы