如果您索引敏感信息,则需要小心允许用户使用原始查询。如果您的表单没有 XSRF 保护,则可以使用跨域搜索计时攻击从索引中提取信息 [1]。
如果您允许原始查询,它还可以允许用户通过输入缓慢的查询来对您的应用程序进行 DOS 攻击。
[1] https://www.idontplaydarts.com/2015/09/cross-domain-timing-attacks-against-lucene/
(PECL solr >= 0.9.2)
SolrUtils::queryPhrase — 从未转义的 Lucene 字符串准备一个短语
str
Lucene 短语。
返回包含在双引号中的短语。
如果您索引敏感信息,则需要小心允许用户使用原始查询。如果您的表单没有 XSRF 保护,则可以使用跨域搜索计时攻击从索引中提取信息 [1]。
如果您允许原始查询,它还可以允许用户通过输入缓慢的查询来对您的应用程序进行 DOS 攻击。
[1] https://www.idontplaydarts.com/2015/09/cross-domain-timing-attacks-against-lucene/
进行了一些测试,似乎该函数也对输入进行了清理(在 1.0 以上的版本上测试)。术语“短语”与完整的查询不同,例如“FIELD:冒号后面的右半部分是短语”。
因此,如果您想搜索 SOME_FIELD:some value 并且有一个转义字符,例如 +,那么您必须将代码写出来
$query = 'SOME_FIELD:' . SolrUtils::queryPhrase('some value with an escape character like +');
这将正确地将其转义为
some value with an escape character like \+
仅供参考。