我需要一个正则表达式来与 Notepad++“在文件中查找”或 Linux 上的 find 和 grep 命令一起使用
find $dirs -type f -name '*.php' -o -name '*.sh' -exec grep -rHn "REGEX"
确保我们的代码存储库中没有硬编码密码
密码长度至少为8个字符,最多为12个字符,且至少包含1个小写、大写、数字字符,可以包含特殊字符,也可以不包含特殊字符
这是我想要匹配的示例密码
sH@R3d1nH3re
f0llOwUp
谢谢
最佳答案
几乎不可能将密码与任何其他文本/代码区分开来,但这里是您要查找的正则表达式,它将匹配除空格之外的任何内容,包括单引号和双引号:
[!-~]{8,12}
如果您不想包含引号并且密码必须包含引号,请尝试此操作(不确定是否需要转义起始括号,但应该不会造成伤害):
['"][!#-&(-~]{8,12}['"]
请注意,对于 grep,您必须使用 -P 选项并转义双引号,例如:
grep -P "['\"][!#-&(-~]{8,12}['\"]"
如果你想确保至少有一个小写字母和至少一个大写字母和至少一个数字,你必须使用前瞻,这会更完整,但这个网站底部有一个示例和解释(注意:我无法让前瞻在 Notepad++ 中工作): https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9781449327453/ch04s19.html#validation-password-variations
关于用于在代码存储库中搜索或抓取复杂密码的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29639240/