精心整理的恶意与边缘情况输入字符串列表(blns.txt/blns.json),用于用户输入验证、注入和 Unicode 处理的 QA 与安全测试。
淘气字符串大列表是一份不断演进的字符串清单,这些字符串在作为用户输入数据使用时极有可能引发问题。它旨在帮助自动化和人工 QA 测试;每当你的 QA 工程师走进酒吧时,它都能派上用场。
即便是拥有大量自动化测试的数十亿美元级公司,也无法发现每一个不良输入。例如,看看在 Twitter 上尝试发布一个零宽空格(U+200B)时会发生什么:
尽管这不是恶意错误,而且普通用户也不会发布奇怪的 unicode 字符,但针对意外输入返回“内部服务器错误”对用户来说从来都不是良好体验,而且实际上可能是更深层字符串校验问题的征兆。淘气字符串大列表旨在帮助揭示此类问题。
blns.txt 由以换行符分隔的字符串和以 # 开头的注释组成。注释将字符串划分为多个部分,便于人工阅读和复制/粘贴到输入表单中。对于希望以编程方式访问这些字符串的用户,提供了 blns.json 文件,其中包含一个已去除所有注释的数组(scripts 文件夹中包含用于生成 blns.json 的 Python 脚本)。
欢迎发送 pull request 来添加更多字符串或额外部分。但是,请不要发送包含超长字符串(255 个字符以上)的 pull request,因为这会使列表更难查看。
同样,请不要发送损害文件手动可用性的 pull request。这包括 EICAR 测试字符串,它可能导致文件被防病毒扫描器标记,以及会改变 blns.txt 编码的文件。此外,不要发送空字符(U+0000)字符串,因为它会将 GitHub 上的文件格式更改为二进制,并导致其在 pull request 中无法阅读。最后,在添加或删除字符串时,请在执行 pull request 时更新所有文件。
淘气字符串大列表旨在用于你拥有和管理的软件。部分淘气字符串可能表明存在安全漏洞,因此对第三方软件使用此类字符串可能构成犯罪。维护者不对因使用该列表而导致的任何负面行为负责。
此外,淘气字符串大列表并不能完全替代针对你服务的正式安全/渗透测试。
淘气字符串大列表的各种实现已进入各种包管理器。这些由外部各方维护,但可以在这里找到:
请提交 PR 以列出其他实现。
Max Woolf (@minimaxir)
MIT