2010-07-23 11 views
5

Tenemos un formulario que tiene campos para nombre y apellido. Me pidieron que permitiera los guiones bajos. No conozco ninguna inyección de sql que use guiones bajos, pero tampoco conozco a nadie con un guión bajo en su nombre. ¿Hay alguna buena razón para permitir o no permitir los caracteres de subrayado en los nombres?¿Debo permitir guiones bajos con nombre y apellido?

EDIT: Estoy usando parámetros y validación del lado del servidor. Esto es para la validación del lado del cliente a través del complemento de validación jQuery.

EDIT 2: No quise que esto se convirtiera en un debate sobre si debería o no hacer una validación ... Solo quería saber si había alguna razón convincente para aceptar los guiones bajos, como debería aceptar Gente irlandesa o guiones. Basado en eso, estoy aceptando la respuesta de Oren.

+0

¿qué idioma del lado del servidor estás usando? – Sarfraz

+2

Fuera de interés, ¿alguien ha oído hablar de un nombre * real * que contenía un guión bajo? – stuartd

+0

@sAc - estamos usando .Net –

Respuesta

14

Debe ser lo más liberal posible en lo que permite como nombre. No hay una buena razón para rechazar un guión bajo, entonces, ¿por qué hacerlo? Hay muchas historias de terror de personas que intentan utilizar software que no permite su nombre real. Eche un vistazo a Falsehoods Programmers Believe About Names para supuestos que no debe hacer.

+0

+1 ¡Llegaste antes que yo! –

+2

Esa publicación de blog es bastante inútil. No da ningún consejo sobre cómo manejar realmente los nombres en su sistema. –

+2

¿No? Pensé que ofrecía un buen consejo sobre _no usar listas blancas para restringir innecesariamente el ingreso de nombres_ en sus aplicaciones. –

12

¡NO IMPIDA LA INYECCIÓN DE SQL USANDO WHITELISTS!

¿Ya te has encontrado con O'Neill?

En su lugar, use los parámetros.

tengo que admitir, sin embargo, que las listas blancas va a funcionar mejor que las listas negras


Re: EDIT:
que no debe hacer dicha validación en absoluto.
Si su código del lado del servidor puede manejarlo, no hay nada de malo con el nombre --'[email protected]_.
Si el código del lado del servidor no puede manejarlo, debe.

+2

+1, pero necesita ser más grande –

+0

Estoy usando parámetros y validación del lado del servidor. Esto es solo para la validación del lado del cliente. –

+0

+1 dejar de gritar :) – Fosco

3

Usted está haciendo su validación incorrecta. Al evitar la inyección de sql, solo use marcadores de posición o la función de escape de su biblioteca de base de datos para escapar de los datos. Qué personajes usas en el nombre no importa entonces.

1

Idealmente, usted debe ser capaz de permitir que cualquier carácter y no tiene un problema con la inyección de SQL porque está utilizando consultas con parámetros etc.

¿Es no permitir que '? ¿Cómo crees que al Sr. O'Reilly le gusta eso?

+0

permitimos personas irlandesas. –

+0

- depende de si es Tim o William. –

2

Deberá dejar apóstrofos y guiones (O'Reilly, Double-Barrel). Nunca he oído hablar de un guión bajo en un nombre, sin embargo.

1

Si evita los guiones bajos con la suposición de que no conocemos los nombres con guiones bajos, ¿haría lo mismo con las otras docenas (cientos) de otros "caracteres especiales"?

A menos que haya alguna razón para bloquear los caracteres de subrayado, dejaré que el usuario pueda ingresar su nombre como lo desee.

Cuestiones relacionadas