如果您索引了敏感資訊,則在允許使用者使用原始查詢時需要格外小心。如果您的表單沒有 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 \+
僅供參考。