Recientemente recibí un comentario de un colega sobre mi código fuente de un sitio web. Él dice que es una mala práctica no manejar con gracia lo que la interfaz visual no permite.¿Es malo no proporcionar errores graciosos a un usuario que no usa el sitio web correctamente?
Como no está muy claro, he aquí un ejemplo.
Digamos que un visitante puede comentar algo.
- Un comentario se guarda en una base de datos, en la columna
nvarchar(500)
. - La longitud
<input />
campo está limitado a 500.
Pero, por supuesto, nada impide a un usuario más avanzado a desactivar el límite de longitud y para escribir 501 caracteres.
(Otros ejemplos:. Presentar una opción que ni siquiera existe en un <select />
Pero no es un error de elegante cuando se le pide al usuario que introduzca un número, y ella entra en un no-número en lugar, ya los eventos de pulsación de tecla se controlan a través de JavaScript, y es posible que JavaScript esté deshabilitado)
Si el visitante lo hace, se produce un error en el nivel de contratos de código. La solicitud AJAX fallaría con un error inesperado (o, en el envío de la página, habrá un error inesperado). En todos los casos, el visitante verá que algo malo sucedió, pero no tendrá un mensaje elegante que indique que la duración del comentario enviado es demasiado larga.
¿Por qué es una mala práctica? ¿Por qué me molestaría en diseñar mensajes de error claros y explícitos para los casos en que el visitante que usa correctamente el sitio web nunca tendrá?
Nota: entiendo que aspira a mostrar un error detallada de .NET Framework y un seguimiento de pila cuando sucede algo como esto. Si lo hago, es un grave problema de seguridad. Pero en mi caso, solo hay una respuesta AJAX con algo muy genérico o una redirección a una página genérica con la que se disculpa por un error.
Estas bromeando ¿verdad? Parece que no quieres hacer el trabajo. Un usuario no debería tener que ver un montón de errores de código. Debe tener una correcta comprobación de errores que no permita a los usuarios hacer cosas que claramente no deberían. Debe verificar esto en el frontend (JavaScript) y en el back-end. Si un usuario omite las verificaciones javascript de alguna manera, su sistema debería detectarlo antes de intentar enviarlo a la base de datos. – xil3
@ xil3 - ¿Has leído la pregunta? Indica que está siendo protegido en FrontEnd usando maxlength y en el back-end usando contratos de código. Él está preguntando si debería mostrar un mensaje de error formateado (y potencialmente traducido) para un escenario que solo podría ser causado por un usuario malintencionado. –
@MainMa - Creo que debe reformular su pregunta, ya que cada respuesta aquí no se ha entendido. –