Код Middle Секреты и управление ключами обновлено

Простой сканер секретов

Условие

Напишите scan_secrets(text), которая возвращает отсортированный список уникальных типов найденных секретов:

  • aws_access_key: AKIA или ASIA, затем ровно 16 символов из заглавных латинских букв и цифр, на границах слова.
  • github_token: ghp_, gho_, ghu_, ghs_ или ghr_, затем ровно 36 латинских букв и цифр, на границах слова.
  • private_key: строка вида -----BEGIN PRIVATE KEY----- или с одним словом из заглавных букв перед PRIVATE (-----BEGIN RSA PRIVATE KEY-----).
  • password: слово password, passwd или pwd (без учёта регистра), перед которым нет латинской буквы (подходит DB_PASSWORD), затем необязательные пробелы, = или :, необязательные пробелы и необязательная кавычка, затем значение из 4 и более символов без пробелов и кавычек, которое не начинается с $, < или { (это подстановки, а не секреты).

Примеры

scan_secrets("aws_key = AKIAIOSFODNN7EXAMPLE") // ["aws_access_key"]
scan_secrets("token: ghp_a1B2a1B2a1B2a1B2a1B2a1B2a1B2a1B2a1B2") // ["github_token"]
scan_secrets("-----BEGIN RSA PRIVATE KEY-----\nMIIE...") // ["private_key"]

Как подойти

Подсказки: 2
  1. Опишите правила словарём имя → регулярное выражение.
  2. Негативный просмотр вперёд (?![$<{]) исключит подстановки.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме