Должен ли я разрешить подчеркивание в имени и фамилии? - PullRequest
5 голосов
/ 23 июля 2010

У нас есть форма с полями для имени и фамилии.Меня попросили разрешить подчеркивание.Я не знаю ни одной инъекции SQL, которая использует подчеркивание, но я также не знаю никого с подчеркиванием в их имени.Есть веская причина, чтобы разрешить или запретить подчеркивания в именах?

РЕДАКТИРОВАТЬ: я использую параметры и проверки на стороне сервера.Это для проверки на стороне клиента с помощью плагина проверки jQuery.

РЕДАКТИРОВАТЬ 2: Я не хотел, чтобы это стало обсуждением того, должен ли я проводить какую-либо проверку ... Я просто хотел знать, знаюесли была какая-то веская причина принять подчеркивание, как я должен принять ирландцев или дефисы.Исходя из этого, я принимаю ответ Орена.

Ответы [ 6 ]

14 голосов
/ 23 июля 2010

Вы должны быть настолько либеральными, насколько это возможно в том, что вы допускаете в качестве имени.Нет веских причин запрещать подчеркивание, так зачем это делать?Есть много страшных историй о людях, которые пытаются использовать программное обеспечение, которое запрещает их настоящее имя.Взгляните на Falsehoods Programmers Believe About Names для предположений, которые вы не должны делать.

12 голосов
/ 23 июля 2010

НЕ ПРЕДОТВРАЩАЙТЕ SQL-инъекцию, используя белые списки!

Вы уже сталкивались с O'Neill?тем не менее, эти белые списки будут работать лучше, чем черные списки, в имени --'!@--_.
нет ничего плохого, если ваш серверный код не может его обработать, он должен .

3 голосов
/ 23 июля 2010

Вы делаете свою проверку неправильно. При предотвращении внедрения SQL просто используйте заполнители или функцию escape вашей библиотеки базы данных, чтобы экранировать данные. То, какие символы вы используете в имени, не имеет значения.

2 голосов
/ 23 июля 2010

Вам нужно будет разрешить апострофы и дефисы (O'Reilly, Double-Barrel).Никогда не слышал о подчеркивании в имени.

1 голос
/ 23 июля 2010

Если вы запрещаете подчеркивание, предполагая, что мы не знаем имен с подчеркиванием, сделаете ли вы то же самое для других десятков (сотен) других «специальных символов»?

Если нет какой-либо причины блокировать подчеркивания, я бы оставил пользователю возможность вводить свое имя так, как он хочет.

1 голос
/ 23 июля 2010

В идеале вы должны иметь возможность разрешать любые символы и не иметь проблем с SQL-инъекцией, поскольку вы используете параметризованные запросы и т. Д.

Вы запрещаете '?Как вы думаете, мистеру О'Рейли это нравится?

...