Ir al contenido

El campo de correo no es el único que los formularios de registro manejan mal. Se rechaza un nombre con apóstrofo, un nombre tailandés se corta a la mitad, una contraseña con un espacio se recorta sin aviso y <b>Jane</b> acaba en negrita en la página de perfil. Proxy Mail QA ofrece valores listos para los campos de nombre y contraseña de un formulario, igual que las direcciones poco comunes lo hacen para el campo de correo, agrupados según lo que la app debería hacer con cada uno.

  • Un agente: get_name_variants y get_password_variants en el MCP server. El agente escribe cada valor en el formulario e informa de lo que hizo la app.
  • Una prueba: qa.nameVariants() y qa.passwordVariants() en el paquete npm, name_variants() y password_variants() en el helper de Python, o GET /v1/variants/names y GET /v1/variants/passwords en la REST API.
  • A mano: Nueva dirección en la app ofrece un nombre de pila de caso límite en la persona; Proxy Mail QA for Chrome ofrece uno en sus tarjetas de relleno, y una contraseña de caso límite que cumple las reglas propias del campo.

Cada valor viene con tests (lo que comprueba) y value (qué escribir, exactamente).

Grupo Qué significa Qué comprobar
accept El nombre de una persona real, o una contraseña dentro de las reglas del campo La app lo acepta tal como se escribió, y la cuenta funciona después
reject Rompe los límites propios del campo: demasiado largo, vacío, solo espacios, un símbolo donde no se permite ninguno La app lo rechaza con un mensaje claro, sin crear una cuenta
store_as_text Parece código: HTML, una etiqueta script, una inyección SQL, una expresión de plantilla La app lo guarda y lo muestra exactamente como se escribió, nunca lo ejecuta
decide Es razonable que las apps difieran: dígitos en un nombre, un emoji, espacios alrededor, solo dígitos en una contraseña Anota qué hizo la app: lo aceptó, lo rechazó o lo cambió (recortado, escapado, acortado)

Pasa el campo (first_name, last_name, full_name o display_name) y su longitud máxima cuando la tenga, para que la lista incluya un nombre de exactamente esa longitud y uno que la supere en uno.

Grupo Valores
Aceptar O'Brien, Smith-Jones, Mary Ann, J. R., Jean-Luc, D'Angelo, José, Zoë, Ñandú, Søren, Straße, Łukasz, İnci, 李, さくら, 김, Мария, Ελένη, محمد, דוד, प्रिया, สมชาย, una letra, exactamente el máximo
Rechazar Uno más que el máximo, vacío, solo espacios
Guardar como texto <b>Jane</b>, <script>alert(1)</script>, Robert'); DROP TABLE students;--, {{7*7}}, =1+1, Jane%00Doe
Decidir Jane2, 3M, ***, ---, Jane&Co, A/S, Dr., #1, Jane 🌸, un espacio de ancho cero en medio, espacios antes y después, é compuesto y descompuesto, y 64, 128 y 255 caracteres cuando no se indica un máximo

Los nombres árabes y hebreos se escriben de derecha a izquierda, el devanagari lleva marcas combinables y el tailandés no tiene espacios entre palabras: cada uno hace fallar un tipo distinto de validación. Los é compuesto y descompuesto son el mismo nombre en dos codificaciones; una app que no normaliza puede guardar dos cuentas para una persona.

Pasa las reglas del campo: min_length (8 por defecto), max_length (64 por defecto) y si se permiten symbols (sí por defecto). Cada contraseña se crea desde cero con un generador aleatorio seguro, así que dos llamadas nunca comparten una.

Grupo Valores
Aceptar Exactamente el mínimo, exactamente el máximo y (donde se permiten símbolos) cada clase: !@#$%, -_+=, ()[]{}<>, comillas, una barra invertida, un espacio en medio, éüñ
Rechazar Uno menos que el mínimo, uno más que el máximo, un símbolo donde no se permite ninguno
Decidir Solo dígitos, solo minúsculas, un espacio al principio, un espacio al final, un emoji, é compuesto y descompuesto, y cuando el máximo supera 72, dos contraseñas que comparten sus primeros 72 bytes

Establece cada contraseña aceptada con el formulario y luego inicia sesión con ella: una contraseña que se acepta pero se recorta, se acorta o se recodifica al entrar no permitirá iniciar sesión tal como se escribió. bcrypt solo lee los primeros 72 bytes, así que la segunda contraseña del par de 72 bytes no debe permitir iniciar sesión como la primera.

Informa de los resultados en una tabla: el valor, qué prueba, si el formulario lo aceptó, qué guardó la app (tal como se escribió, o cambiado) y, para las contraseñas, si funcionó el inicio de sesión. La skill signup-form-email-validation hace esto para direcciones, nombres y contraseñas a la vez.

  • Cada valor aceptado crea una cuenta distinta en la app. Prueba en un entorno de staging, o elimínalas después.
  • Las cadenas de inyección son texto inofensivo. Solo comprueban que la app las trata como texto; nunca las uses contra una app que no sea tuya o que no tengas permiso para probar.
  • En una shell, pon los valores entre comillas: ', ", \, &, ;, < y > tienen un significado para ella.

¿Tienes una pregunta sobre esta página?

Pregunta en cualquier idioma. La documentación puede responderte de inmediato, o puedes enviar tu pregunta al equipo de Proxy Mail QA, que responde en inglés.