Я хочу применить регулярное выражение, используемое в gitleaks, в secretlint

Сейчас я пытаюсь перейти с gitleaks на инструмент под названием секрет.

Изначально в правиле generic-api-key при выполнении gitleaks было предупреждение, но после перехода на secretlint предупреждение больше не появляется.

В частности, я прописал регулярное выражение gitleaks.toml предоставлен gitleaks в файле конфигурации secretlint .secretlintrc.json в соответствии с формат @secretlint-rule-pattern, предоставленный secretlint.

[[rules]]
id = "generic-api-key"
description = "Generic API Key"
regex = '''(?i)((key|api[^Version]|token|secret|password|auth)[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([0-9a-zA-Z\-_=]{8,64})['\"]'''
entropy = 3.7
secretGroup = 4
keywords = [
    "key",
    "api",
    "token",
    "secret",
    "password",
    "auth",
]

к

{
  "rules": [
    {
      "id": "@secretlint/secretlint-rule-pattern",
      "options": {
        "patterns": [
          {
            "name": "Generic API key",
            "pattern": "/(?i)((key|api[^Version]|token|secret|password|auth)[a-z0-9_ .\\-,]{0,25})(=|>|:=|\\|\\|:|<=|=>|:).{0,5}['\"]([0-9a-zA-Z\\-_=]{8,64})['\"]/"
          }
        ]
      }
    }
  ]
}

Я думаю, что, возможно, я неправильно переношу регулярное выражение, но если кто-нибудь может сказать мне, где я ошибаюсь, я хотел бы знать.

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
0
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Основная проблема заключается в том, что встроенный модификатор (?i) не поддерживается механизмом регулярных выражений JavaScript. Вы должны использовать обычный флаг i после второго разделителя регулярного выражения (/.../i).

Кроме того, api[^Version] является типичной ошибкой пользователя. Если вы хотели сказать, что за api не следует Version, вам нужно api(?!Version).

Таким образом, вы можете использовать

"pattern": "/((key|api(?!Version)|token|secret|password|auth)[\\w .,-]{0,25})([=>:]|:=|\\|\\|:|<=|=>).{0,5}['\"]([\\w=-]{8,64})['\"]/i"

Обратите внимание, что я «сжал» [A-Za-z0-9_] в один \w, здесь они эквивалентны. Обратите внимание, что символ - не требует экранирования при использовании в конце (или начале) класса символов.

Спасибо за подробное объяснение. Это поможет мне выполнить работу!

tom yam 10.04.2022 03:34

Другие вопросы по теме