Сейчас я пытаюсь перейти с 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})['\"]/"
}
]
}
}
]
}
Я думаю, что, возможно, я неправильно переношу регулярное выражение, но если кто-нибудь может сказать мне, где я ошибаюсь, я хотел бы знать.
Основная проблема заключается в том, что встроенный модификатор (?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
, здесь они эквивалентны. Обратите внимание, что символ -
не требует экранирования при использовании в конце (или начале) класса символов.
Спасибо за подробное объяснение. Это поможет мне выполнить работу!