Regex 比對器 (proto)
type.matcher.v3.RegexMatcher
[type.matcher.v3.RegexMatcher proto]
一種 regex 比對器,設計用於在處理不受信任的輸入時確保安全性。
{
"google_re2": {...},
"regex": ...
}
- google_re2
(type.matcher.v3.RegexMatcher.GoogleRE2) Google 的 RE2 regex 引擎。
- regex
(字串,必要) regex 比對字串。該字串必須受設定的引擎支援。regex 會比對整個字串,而非部分比對。
type.matcher.v3.RegexMatcher.GoogleRE2
[type.matcher.v3.RegexMatcher.GoogleRE2 proto]
Google 的 RE2 regex 引擎。regex 字串必須符合文件中記錄的 語法。該引擎設計為在線性時間內完成執行,並限制使用的記憶體量。
Envoy 透過執行階段支援程式大小檢查。執行階段金鑰 re2.max_program_size.error_level
和 re2.max_program_size.warn_level
可以設定為整數,作為編譯的 regex 可以具有的最大程式大小或複雜度,超出此值將會分別拋出例外或記錄警告。re2.max_program_size.error_level
預設為 100,而如果未設定 re2.max_program_size.warn_level
,則沒有預設值 (不會檢查/記錄警告)。
Envoy 會發出兩個統計資料來追蹤 regex 的程式大小:直方圖 re2.program_size
,記錄程式大小,以及計數器 re2.exceeded_warn_level
,每次程式大小超過警告層級閾值時,該計數器就會遞增。
{
"max_program_size": {...}
}
- max_program_size
(UInt32Value) 此欄位控制 RE2「程式大小」,這是對編譯的 regex 評估複雜度的粗略估計。程式大小大於設定值的 regex 將無法編譯。在這種情況下,可以增加設定的最大程式大小,或簡化 regex。如果未指定,則預設值為 100。
此欄位已棄用;正規表示式驗證應在管理伺服器上執行,而不是由每個個別用戶端執行。
注意
雖然此欄位已棄用,但程式大小仍會根據全域
re2.max_program_size.error_level
執行階段值進行檢查。
type.matcher.v3.RegexMatchAndSubstitute
[type.matcher.v3.RegexMatchAndSubstitute proto]
描述如何比對字串,然後使用正規表示式和取代字串產生新字串。
{
"pattern": {...},
"substitution": ...
}
- pattern
(type.matcher.v3.RegexMatcher,必要) 用於尋找字串 (以下稱為「主體字串」) 中應取代部分的正規表示式。當在取代作業期間產生新字串時,新字串最初與主體字串相同,但主體字串中的所有相符項都會被取代字串取代。如果不需要取代所有相符項,可以使用正規表示式錨點來確保單一相符項,以便僅取代一個模式的發生。可以在模式中使用擷取群組來擷取主體字串的部分,然後在取代字串中參考。