我想在调用服务器之前验证我的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客户端。
有什么建议吗?感谢。
答案 0 :(得分:1)
我应该验证elasticsearch ID吗?
如果你想。您可以检查是否只存在字母数字,+
,/
和=
。这增加了额外的安全层,但不一定非必要。本着" defence in depth"的精神,我会推荐它。
如果没有..直接查询Elasticsearch服务器是否安全? 用户将无法输入ID,但有些[恶意]用户可以 拦截或弄清楚如何用随机字符串调用端点, 这可能是一种可能的攻击或访问不同的数据集?
如果您使用久经考验的JSON编码器来构建查询,那么任何攻击者都无法破解查询并检索他们并不意味着的数据(即打破使用JSON字符串构建的数据连接是不可能的 - NoSQL Injection的一种形式。即使您正在验证我之前描述的JSON字符串,也要执行此操作。