弹性搜索通过搜索抛出客户端客户端错误响应

时间:2016-04-26 08:38:33

标签: php elasticsearch

我有人正在探索sql注射,这很好,但我发现弹性搜索会抛出我认为库只会处理的错误。

例如,如果有人搜索

' or 1=1 ' --

然后我得到

exception 'Guzzle\Http\Exception\ClientErrorResponseException' with message 'Client error response
[status code] 400
[reason phrase] Bad Request
[url] http://localhost:9200/items/product/_search' in /.../vendor/guzzle/guzzle/src/Guzzle/Http/Exception/BadResponseException.php:43

如果我们查看正在进行搜索的代码

    $client = new Client();
    $products = $client->search([
        'index' => 'product',
        'type' => 'product',
        'body' => [
            'query' => [
                'query_string' => [
                    'query' => $query,
                ]
            ]
        ]
    ]);

其中$ query等于' or 1=1 ' --

那么,为什么查询不会被转义,为什么它会抛出一个错误,我应该怎么做才能阻止它呢?我也让人们试图通过搜索来尝试执行某些脚本或其他东西。

我不需要花哨的选项(比如foo -bar)

运行elasticsearch / elasticsearch v1.1.0 php库 在服务器上运行elasticsearch v1.7.1

1 个答案:

答案 0 :(得分:0)

尝试

$client = ClientBuilder::create()->build();