tag recommendation moz length descriptions description html webforms maxlength

recommendation - title tag html



¿Hay navegadores que no admiten maxlength? (6)

varios de los correos electrónicos que he recibido muestran que el usuario ha creado un pin con más de 4 caracteres.

¿Cómo es esto posible? ¿Hay navegadores que no admiten maxlength?

Yo investigaría los encabezados USER_AGENT y REFERER relacionados con esas actividades de usuario. Quizás un usuario malintencionado haya enviado formularios mediante eludir programáticamente las restricciones del navegador, solo para verificar su defensa perimetral. Si es así deberías ver algunos patrones allí.

De todos modos, aparte de estas conjeturas, la maxlength no debe tratarse como un medio para asegurar la entrada. Cualquier cosa del lado del cliente no está bajo su control, existe simplemente para hacer que la interfaz de usuario sea más intuitiva e interactiva. Siempre debes comprobar todo en el servidor. En ese caso, el PIN se compone de 4 dígitos, de lo contrario rechace la entrada. La regla de oro es tratar todas las entradas de los usuarios como hostiles y validarlas completamente en el servidor.

Tengo una página de entrada al concurso en el sitio web de mi empresa. Para participar en el concurso, crea un inicio de sesión, que es solo un correo electrónico y un pin de 4 dígitos. Aquí está el campo PIN:

<input type="password" name="contest_pin" id="contest_pin" maxlength="4" />

Cuando los usuarios envían el formulario, la cuenta se crea en nuestra base de datos y luego reciben un correo electrónico (en el que estoy copiado) que contiene la dirección de correo electrónico y el PIN que crearon.

Aquí está el problema: en cada navegador que he probado (Safari / Chrome / Firefox en Mac, Chrome / Firefox en Linux, IE7 / 8/9 en Windows) NO PUEDO ingresar más de 4 dígitos en ese campo PIN. Y, sin embargo, varios de los correos electrónicos que recibí muestran que el usuario ha creado un pin con más de 4 caracteres.

¿Cómo es esto posible? ¿Hay navegadores que no admiten maxlength? No he probado en Opera, ni en ninguno de los navegadores móviles. No es un gran problema si su pin tiene más de 4 dígitos; La base de datos aceptará más. Me pregunto cómo se las arreglaron para moverse al máximo.

EDITADO PARA AÑADIR

Hay demasiadas respuestas básicamente que dicen lo mismo para que yo responda individualmente a todas ellas. SÉ que siempre debería hacer la validación del lado del servidor para cualquier cosa importante, y tenemos un código PHP en el lugar que limpia nuestros datos, y si fuera muy importante también tendría un código PHP que aplicara el límite de 4 dígitos. No es tan importante para nosotros que sean solo 4 caracteres, así que no lo he hecho cumplir. Solo me pregunto por qué la propiedad maxlength no está haciendo lo que está diseñado para hacer, lo que evita que los usuarios ingresen más de un cierto número de caracteres. Para aquellos de ustedes que sugirieron scripts maliciosos o Firebug, puedo estar 100% seguro de que este no es el caso. Solo los usuarios registrados de nuestro sitio (que están limitados a una lista de miembros corporativos muy específicos) pueden acceder a la página de entrada al concurso, y puedo garantizar que ninguna de las aproximadamente 100 personas en esa lista intentará deliberadamente eludir un propiedad de tipo de entrada.


Creo que todos los navegadores lo admiten, aquí hay algunos enlaces de referencia:

Longitud máxima | SitePointReference

Longitud máxima | Escuelas w3

Obviamente, hay una forma de evitar esto: debe asegurarse de que SIEMPRE tenga una validación adecuada del lado del servidor, ya que el lado del cliente generalmente no es suficiente por sí solo.


En general, tratar de hacer cumplir las reglas para las aportaciones de los usuarios realizadas desde el lado del cliente es una mala idea. Tuve una experiencia en la que habíamos subcontratado algunos trabajos a algunos programadores y su idea de desinfectar las opiniones de los usuarios era hacer que los usuarios no pudieran ingresar más de 10 caracteres en un campo determinado. Un rápido cambio de firebug y, oh, mira, puedo abandonar la base de datos del servidor con una mínima inyección de SQL.

Si fuera usted, comprobaría las longitudes máximas con cualquier secuencia de comandos que agregue la información del usuario a su base de datos y devolvería los errores de validación del formulario si la entrada del usuario excede la longitud máxima especificada.


Es muy probable que sean robots que leen los nombres de los campos y crean solicitudes GET y POST basadas en ellas en lugar de utilizar el formulario HTML como lo haría un usuario humano normal.

Esta es la razón por la cual la validación del formulario del lado del cliente nunca es suficiente para garantizar que los datos sean correctos. La validación del lado del cliente es buena ya que responde a los usuarios finales, pero no puede evitar que los datos erróneos lleguen a la puerta de su servidor.

Como ejemplo, digamos que tengo un campo de entrada en un formulario cuya acción es GET. La longitud máxima de mi campo de entrada es 4. Cuando presiono enviar, veo que la URL termina con ?field=1234 . No hay nada que me impida actualizar la URL a ?field=123456789 y presionar intro. Se pueden hacer cosas similares con acciones POST, pero se necesita una herramienta para hacerlo.


Este es el tipo de cosa que aún debe validar del lado del servidor, aunque los clientes casi siempre lo respalden. Es muy fácil sortear una longitud máxima: la barra de herramientas de Firefox Developer incluye una opción para "Eliminar longitudes máximas", o una solicitud puede ser editada a mano muy fácilmente. Casi creo que, en el pasado, podría obtener una longitud máxima en uno de los navegadores simplemente usando cortar y pegar (por ejemplo, el navegador no le permitiría escribir más caracteres, pero si pegó un valor de más de 5 caracteres). entraría en todos ellos), aunque no puedo recordar específicamente en qué navegador vi eso en ...


Todos los navegadores soportan maxlength. Sin embargo, este atributo se puede eliminar / cambiar fácilmente mediante métodos DOM o, por ejemplo, con la barra de herramientas para desarrolladores Web de Firefox.