2016-01-31 2 views
0

Я новичок в ES и интересно, если search function дезинфицирует внутреннее поле «запрос» в параметре тела, когда передал что-то вроде:Выполняет ли Elasticsearch-py дезинформирование запросов?

"query": { 
     "filtered": { 
     "query": { 
      "match": { 
       "_all": { 
        "query": "[THIS PARAMETER]", 
        "operator": "and" 
       } 
      } 
     } 
     } 
    } 

Я попытался каждый вход, что я могу разорвать его и я могу Кажется. Я создал функцию санитизации, но это привело к худшим результатам поиска при поиске строк, таких как «&» или «+». Я просмотрел код и, похоже, не обнаружил никакой очевидной санации в этой области. Я просто хочу быть уверенным, прежде чем отправлять запрос пользователя прямо через функцию.

Благодаря

+0

Это поле запроса является частью тела JSON, почему Python что-то ему делает? –

+0

Вот источник ['search'] (https://github.com/elastic/elasticsearch-py/blob/master/elasticsearch/client/__init__.py#L453-L531) –

+0

Потому что это библиотека, предназначенная для абстрактного большая часть функциональности ES. Я полагал, что это возможно, это может быть итерация словаря и дезинфекция известных входов, так же, как ORM делает это для защиты от SQL-инъекции. –

ответ

0

Я вижу еще три возможных подхода к подтверждению эс против перевернутой атаки против индексов, которые являются базы данных, в результате атаки, подобной инъекции SQL:

  1. Как хорошо вы знаете Lucene и как она обрабатывает атаки? Проведение архитектуры Lucene и поддержка кода напрямую могут дать вам представление о том, как es обрабатывает атаки

  2. Попробуйте подход SOLR, в котором также используется Lucene, и посмотрите, как SOLR обрабатывает атаки; SOLR упал позади es, затем догонял и улучшал другие области; есть некоторое интересное архитектурный SWOT сравнение между эс и ГУМЗОМ

  3. Лягте часть ELK стеки - по крайней мере, Kibana и эс, и проверить Kibana, которые могут генерировать другие эс/Lucene код, который вы могли бы проверить