特殊的姓名和密码
本页由英文自动翻译。
阅读英文版注册表单出错的不只是邮件字段。带撇号的名字被拒绝,泰文名字被截掉一半,带空格的密码被悄悄去掉空格,<b>Jane</b> 在个人资料页上变成了粗体。Proxy Mail QA 为表单的名字和密码字段提供现成的值,就像 少见地址 为邮件字段提供的那样,并按应用应如何处理来分组。
- 智能体:MCP server 上的
get_name_variants和get_password_variants。智能体会把每个值输入表单,并报告应用的反应。 - 测试:npm 包 中的
qa.nameVariants()和qa.passwordVariants(),Python 辅助工具 中的name_variants()和password_variants(),或 REST API 上的GET /v1/variants/names和GET /v1/variants/passwords。 - 手动:应用中的新地址会在人物资料上提供一个边界情况的名字;Proxy Mail QA for Chrome 在填充卡片上提供一个,以及一个符合该字段自身规则的边界情况密码。
每个值都带有 tests(它检查什么)和 value(要准确输入的内容)。
| 分组 | 含义 | 要检查什么 |
|---|---|---|
accept |
真实的人名,或符合字段规则的密码 | 应用按输入原样接受,之后账号能正常使用 |
reject |
超出字段自身的限制:太长、为空、只有空格、在不允许的地方用了符号 | 应用拒绝它并给出清楚的提示,不创建账号 |
store_as_text |
看起来像代码:HTML、script 标签、SQL 注入、模板表达式 | 应用按输入原样保存和显示,绝不执行 |
decide |
不同应用的合理做法不同:名字里有数字、表情符号、前后有空格、密码只有数字 | 记下应用的处理方式:接受、拒绝,或做了改动(去空格、转义、截短) |
传入字段(first_name、last_name、full_name 或 display_name)及其最大长度(如有),这样列表会包含一个正好那么长的名字和一个超出一位的名字。
| 分组 | 值 |
|---|---|
| 接受 | O'Brien、Smith-Jones、Mary Ann、J. R.、Jean-Luc、D'Angelo、José、Zoë、Ñandú、Søren、Straße、Łukasz、İnci、李、さくら、김、Мария、Ελένη、محمد、דוד、प्रिया、สมชาย、单个字母、正好达到最大长度 |
| 拒绝 | 超出最大长度一位、为空、只有空格 |
| 作为文本保存 | <b>Jane</b>, <script>alert(1)</script>, Robert'); DROP TABLE students;--, {{7*7}}, =1+1, Jane%00Doe |
| 自行决定 | Jane2、3M、***、---、Jane&Co、A/S、Dr.、#1、Jane 🌸、中间含零宽空格、前后有空格、é 的合成形式和分解形式,以及未给出最大长度时的 64、128 和 255 个字符 |
阿拉伯文和希伯来文从右往左书写,天城文带有组合符号,泰文词与词之间没有空格:每种都会触发不同类型的校验问题。合成形式和分解形式的 é 是同一个名字的两种编码;不做规范化的应用可能为同一个人保存两个账号。
传入字段的规则:min_length(默认 8)、max_length(默认 64),以及是否允许 symbols(默认允许)。每个密码都用安全随机生成器新生成,任意两次调用都不会得到相同的密码。
| 分组 | 值 |
|---|---|
| 接受 | 正好最小长度、正好最大长度,以及(允许符号时)每一类:!@#$%、-_+=、()[]{}<>、引号、反斜杠、中间含空格、éüñ |
| 拒绝 | 比最小长度少一位、比最大长度多一位、在不允许的地方用了符号 |
| 自行决定 | 只有数字、只有小写字母、开头有空格、结尾有空格、表情符号、é 的合成形式和分解形式,以及最大长度超过 72 时,前 72 字节相同的两个密码 |
用表单设置每个被接受的密码,然后用它登录:被接受但在保存时被去空格、截短或重新编码的密码,按原样输入将无法登录。bcrypt 只读取前 72 字节,所以 72 字节那一对中的第二个密码不能当作第一个密码登录成功。
把结果整理成表格:值、测试内容、表单是否接受、应用保存了什么(原样还是有改动),以及密码能否登录。signup-form-email-validation 技能 可以同时为地址、名字和密码完成这些。
- 每个被接受的值都会在应用中创建一个单独的账号。请在预发布环境中测试,或事后删除这些账号。
- 注入字符串是无害的文本。它们只检查应用是否把它们当作文本处理;绝不要对你不拥有或未获准测试的应用使用它们。
- 在 shell 中要给这些值加引号:
'、"、\、&、;、<和>对 shell 有特殊含义。
对本页有疑问?
可以用任何语言提问。文档可以立即回答,你也可以把问题发给 Proxy Mail QA 团队,他们会用英文回复。