2011-12-22 4 views
2

Мне нужно замаскировать пароль, прежде чем он будет отображаться в файле журнала.Что такое регулярное выражение для этого?

Формат пароля - «пароль»: «pswd123». это только буквенно-цифровое выражение. После маскировки это будет «пароль»: «*«

в моем классе шаблонов, у меня есть следующее выражение reg, но оно не подбирается. любая идея, как это должно быть? ТНХ

@Override 
public String format(LoggingEvent event) { 

    String msg = super.format(event); 

    // regexp not being picked up 
    msg = msg.replace("\"password\":\"[^\"]*", "password:\"***\""); 

    return msg; 
} 
+1

Лично я думаю, что вы все исправите. Не замаскируйте его в самом менеджере регистрации. Замаскируйте его до того, как он попадет в диспетчер регистрации. Что вы делаете с чьим-то фактическим паролем в любом случае? Это просто опасно! – corsiKa

+0

Вне темы, но пароли, состоящие только из цифр и букв, довольно слабы. Есть ли какая-то конкретная причина, по которой вы хотите идти именно так? –

+0

Я бы сказал, не печатайте пароль вообще. Почему вы хотите замаскировать его? – adarshr

ответ

0

Использование .replaceFirst(), .replace() заменяет только подстроки

0
  1. replaceAll является то, что вы ищете
  2. Если вы хотите полный матч, вам не хватает последнего \»в конце регулярного выражения
0

Если вы хотите, чтобы просто показать 3 *, что это легко, если вы хотите, чтобы показать 1 * для каждого символа в пароле, это немного сложнее.

Msg = Regex.Replace(Msg, "\"Password\":\"[^\"]+?\"", "\"Password\":\"***\"") 
0

Используете ли вы какую-либо библиотеку регистрации, такую ​​как log4j или slf4j? Эти библиотеки имеют функции для «замены строк» ​​с использованием регулярных выражений. Вы можете использовать и применять это глобально, изменив файл конфигурации ведения журнала. Вам все равно придется придумать регулярное выражение, для которого используется утилита builder регулярного выражения, например http://myregexp.com/, и создайте регулярное выражение самостоятельно.

+0

да, я использую log4j и slf4j как фасад. Я получил вдохновение из этой темы: http://stackoverflow.com/questions/2461726/how-to-mask-credit-card-numbers-in-log-files-with-log4j –

+0

Похоже, что в функции Logback есть эта функция http: //logback.qos.ch/manual/layouts.html#replace Попытка найти, есть ли встроенная функция log4j. –

Смежные вопросы