【发布时间】:2016-07-01 23:01:17
【问题描述】:
问题:
我有这个人工示例函数:
def test_function(target, words):
pattern = re.compile(r"|".join(words))
return bool(pattern.search(target))
它接受一个单词列表并动态构造一个正则表达式模式没有正确转义列表中的单词。
使用示例:
text = "hello world!"
print(test_function(text, ["test"])) # prints False
print(test_function(text, ["hello"])) # prints True
print(test_function(text, ["test", "world"])) # prints True
问题:
我如何测试这个函数以证明没有正确的正则表达式转义或输入清理?
换句话说,我应该提供words 列表中的哪些项目来“破坏”此功能?
我尝试了几个“邪恶”的正则表达式来模拟灾难性的回溯并强制函数像 (x+x+)+y 或 (a+)+ 一样挂起,但函数只返回 False 立即没有任何问题的迹象。
【问题讨论】:
-
一个总是返回“true”的空字符串(不管其他词).
标签: python regex input-sanitization