跳转到内容

注册表单出错的不只是邮件字段。带撇号的名字被拒绝,泰文名字被截掉一半,带空格的密码被悄悄去掉空格,<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 团队,他们会用英文回复。