【问题标题】:How to sanitize Elasticsearch autogenrated ID?如何清理 Elasticsearch 自动生成的 ID?
【发布时间】:2017-02-19 00:02:09
【问题描述】:

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

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

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

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

    李>

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

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

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

我知道这已解决,但仍想验证 ID。如果 ID 的格式不正确,这至少可以避免对 Elasticsearch 进行不必要的调用。我所知道的是“永远不要相信用户输入”或者在我的情况下避免可能的输入..

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

有什么建议吗?谢谢。

【问题讨论】:

  • 您是否打算仅通过 ID 获取文档?
  • 我正在开发一个使用 Elastisreach 的 REST API,在我的一个端点上我必须查询 elasticsearch 以通过其 ID 检索文档,并且我试图在构建我的之前确保 ID 有效查询。
  • 我不知道有什么方法可以验证 ID,但您始终可以生成自己的文档 ID。此外,我认为威胁很小,因为您只需要执行 GET 请求而无需任何请求正文。

标签: php validation security elasticsearch sanitization


【解决方案1】:

我应该验证 elasticsearch ID 吗?

如果你愿意。您可以检查是否仅存在字母数字 +/=。这增加了额外的安全层,但并非绝对必须这样做。本着“defence in depth”的精神,我会推荐它。

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

如果您使用久经考验的 JSON 编码器来构建查询,那么任何攻击者都无法破坏查询并检索他们不打算这样做的数据(即破坏使用连接构建的 JSON 字符串将不可能 - NoSQL Injection 的一种形式)。即使您正在验证我之前描述的 JSON 字符串,也要这样做。

【讨论】:

    猜你喜欢
    • 2015-09-04
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 2021-11-08
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多