Приветствую, заметил проблему с sensitive_data_set.
Если значение, к примеру, phone из DEFAULT_SENSITIVE_KEY_WORDS
содержит квантификаторы, или любые другие восприимчивые символы регекса, mask_string ломается.
пример такой строки: +7(918)-555-22-11
Еще одна проблема - маска, которая составляется по ключам, содержит только значения.
и если наша структура имеет вид:
{"phone": "102030", "price": "102030"}
mask_string спрячет price, хотя не должен этого делать, т.к он не включен в DEFAULT_SENSITIVE_KEY_WORDS.
Я немного переписал это на:
regex_str = r'("[^"]*?(?={keywords})[^"]*":\s*")[^"]*"'
regex_with_keys = regex_str.format(
keywords="|".join(settings_sensus_app.DEFAULT_SENSITIVE_KEY_WORDS)
)
regex_pattern = re.compile(regex_with_keys)
subst = r'\1***"'
result = re.sub(
regex_pattern,
repl=subst,
string=source_string,
)
Если у вас будет время, протестируйте свой код и мое исправление, если бы у меня было больше времени, я бы с радостью сделал PR, но времени не так много :)