我有人正在探索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
答案 0 :(得分:0)
尝试
$client = ClientBuilder::create()->build();