【发布时间】:2020-10-10 18:29:04
【问题描述】:
我正在构建一种安全算法来摆脱混淆攻击。用户使用令牌进行验证,该令牌应满足以下条件:
- 用户名只能是小写字母,用户名长度至少为 5 位。
- 用户名后跟#。
- # 之后的前两个字符很重要。总是一个数字和一个字符。这部分至少包含一个数字、一个小写字母和一个大写字母。
- 中间可以有任意数量的数字或字母。
- 最后的数字和字符应该与 point-3 的数字和字符完全匹配。
- 应该以#结尾。
- 两个# 中间的字符至少应为 5 个字符。
- 完整的标记仅由两个#、小写和大写字母和数字组成。并且
我不知道正则表达式,但我的指南告诉我,这个任务很容易在验证时通过正则表达式完成。在网上找了很久,发现了一些相似的链接,并尝试将它们组合起来,得到了这个:
^[a-z]{5,}#[a-zA-Z0-9]{2}[A-Z][0-9A-Za-z]*[a-zA-Z0-9]{2}#$
但这仅匹配 1 个测试用例。我不知道如何实现两个哈希的中间部分。我试图用我的英语解释我的问题。请帮忙。
以下测试用例应该通过
userabcd#4a39A234a#
randomuser#4A39a234A#
abcduser#2Aa39232A#
abcdxyz#1q39A231q#
randzzs#1aB1a#
以下测试用例应该失败:
randuser#1aaa1a#
randuser#1112#
randuser#a1a1##
randuser#1aa#
u#4a39a234a#
userstre#1qqeqe123231q$
user#1239a23$a#
useabcd#4a39a234a#12
【问题讨论】:
标签: regex language-agnostic penetration-testing websecurity