RE2-unsafe regex patterns: audit production segments and decide fallback policy
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 45/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Ambito
- backend-api-design, databases
Direzione di ricerca
Inizia da _RE2_UNSAFE in src/flagsmith_sql_flag_engine/translator.py e ispeziona la suite engine-test-data. Esegui l’audit REGEXP_LIKE proposto sulla colonna JSON rules della tabella segments per misurare l’uso di backreference e lookaround. Il lavoro è completato quando la prevalenza è stata registrata, è stata scelta una policy di fallback e il comportamento corrispondente è stato implementato e validato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
The translator returns None for any REGEX condition whose pattern contains:
- Backreferences (
\1–\9) - Lookarounds (
(?=,(?!,(?<=,(?<!)
Snowflake uses RE2, which doesn't support either feature. The detection is conservative-syntactic in _RE2_UNSAFE (src/flagsmith_sql_flag_engine/translator.py).
The engine-test-data suite doesn't include any RE2-unsafe patterns, currently.
What to do
- Audit production segment definitions for either pattern —
REGEXP_LIKEover the segments table'srulesJSON column with a pattern that catches\1–\9or(?=/(?!/(?<=/(?<!as substrings. Cheap query, gives a real prevalence number. - Decide fallback policy based on prevalence:
- If essentially nobody uses these features (most likely): surface the error at segment-edit time. The Flagsmith UI rejects the pattern with a clear "Snowflake-backed envs do not support backreferences / lookarounds" message. Translator's
Nonereturn becomes an unreachable defensive branch. - If non-trivial usage: ship a fallback that runs the pattern through the Python flag_engine just for those segments, e.g. by calling out to an
is_in_segmentUDF. Adds back the per-row Python tax but only for the affected segments.
- If essentially nobody uses these features (most likely): surface the error at segment-edit time. The Flagsmith UI rejects the pattern with a clear "Snowflake-backed envs do not support backreferences / lookarounds" message. Translator's
- Lingua principale
- Python
- Stelle
- 1
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Flagsmith/flagsmith-sql-flag-engine
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
-
Dependency DashboardAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 15/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 35/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
Tutte le issue di Flagsmith/flagsmith-sql-flag-engine
Issue simili
-
New InternshipApertanew_internship
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 70/100
-
[BUG] Reports tab: "Unban" button tooltip shows raw `{{ip}}` placeholder instead of the IP addressApertabug javascript ui
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
bunkerity/bunkerweb#4001 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
PedestrianDynamics/pyFDS-Evac#476 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
google/differential-privacy#516 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
adobe-fonts/source-serif#153 ·