如何清理Elasticsearch自动生成的ID?

时间:2016-10-10 14:17:39

标签: php validation security elasticsearch sanitization

我想在调用服务器之前验证我的Elasticsearch ID 。我正在四处寻找,无论如何都要检查所请求的ID是否具有正确的格式。我不确定这是否有必要。我知道 elasticsearch会生成URL安全的Base64 ID

有人有建议吗?我的问题是:

  • 我应该验证elasticsearch ID 吗?如果是,如何在执行查询之前验证格式?

  • 如果没有..直接查询Elasticsearch服务器是否安全?用户将无法输入ID,但是一些恶意用户可以拦截或弄清楚如何使用随机字符串调用端点,这可能是一种可能的攻击或访问不同的数据集?

我是Elasticsearch的初学者,但我正在寻找最佳实践。我读到的是,在以前的版本中,有一个漏洞可以打开远程代码执行。

https://www.elastic.co/blog/scripting-security

http://bouk.co/blog/elasticsearch-rce/

我知道这是固定的但仍想验证ID。如果ID格式不正确,至少会避免对Elasticsearch进行不必要的调用。我所知道的是“从不信任用户输入”或在我的情况下避免可能的输入..

注意:我使用的是elasticsearch-php客户端。

有什么建议吗?感谢。

1 个答案:

答案 0 :(得分:1)

  

我应该验证elasticsearch ID吗?

如果你想。您可以检查是否只存在字母数字,+/=。这增加了额外的安全层,但不一定非必要。本着" defence in depth"的精神,我会推荐它。

  

如果没有..直接查询Elasticsearch服务器是否安全?   用户将无法输入ID,但有些[恶意]用户可以   拦截或弄清楚如何用随机字符串调用端点,   这可能是一种可能的攻击或访问不同的数据集?

如果您使用久经考验的JSON编码器来构建查询,那么任何攻击者都无法破解查询并检索他们并不意味着的数据(即打破使用JSON字符串构建的数据连接是不可能的 - NoSQL Injection的一种形式。即使您正在验证我之前描述的JSON字符串,也要执行此操作。