gpt4 book ai didi

solr - 使用 solrj 时防止 solr 查询注入(inject)

转载 作者:行者123 更新时间:2023-12-04 12:07:24 24 4
gpt4 key购买 nike

向 HttpSolrServer 查询。

SolrQuery solrQuery = new SolrQuery();
solrQuery.setQuery(q);
QueryResponse queryResponse = solrServer.query(solrQuery);

我需要建立一个 solr 查询,比如
“作者:*user_inputed_text* 标题:*user_inputed_text*”
我需要像 PreparedStatement 这样的东西,但我在 solrj 库中找不到类似的东西。如何构造不包含注入(inject)的查询?如何使用户输入的字符串 -\user_input_text\安全?

我正在使用连接构建查询。例如,当我有此代码时:
public String buildQuery(String userInputedText) {
String query = "author:*" + userInputedText + "* OR title:*" + userInputedText + "*";
}

然后用户可以注入(inject)一些子查询并接收结果,这是不受限制的。
例如输入的字符串是:“OR title:”。因此,整个查询将是:
作者:* 或标题:* 或标题:* 或标题:*

在这种情况下,用户会收到所有结果(不受限制)并传递模式 author:*?* 或 title:*?*。

最佳答案

请考虑使用内置的 solrj ClientUtils 实用程序类。通过它你可以逃脱userInputText

String escapedUserInputText = ClientUtils.escapeQueryChars(userInputText)

更多详情请查看 queryparser syntax页。

关于solr - 使用 solrj 时防止 solr 查询注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26862474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com