2010-07-23 1 views
5

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

EDIT: Я использую параметры и проверку на стороне сервера. Это для проверки на стороне клиента через плагин проверки jQuery.

EDIT 2: Я не имел в виду, чтобы это стало дискуссией о том, следует ли мне делать какие-либо проверки ... Я просто хотел знать, есть ли какая-либо веская причина принимать символы подчеркивания, например, я должен принять Ирландцы или дефисы. Исходя из этого, я принимаю ответ Орена.

+0

какой серверный язык вы используете? – Sarfraz

+2

Из интереса, слышал ли кто-либо о * настоящем * имени, в котором содержался символ подчеркивания? – stuartd

+0

@sAc - мы используем .Net –

ответ

14

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

+0

+1 Ты добрался до меня! –

+2

Это сообщение в блоге довольно бесполезно. Он не дает никаких рекомендаций относительно того, как фактически обрабатывать имена в вашей системе. –

+2

Это не так? Я подумал, что он предлагает довольно много советов о том, не использовать ли «белые списки» для ненужного ограничения имени ввода в ваших приложениях. –

12

НЕ ПРЕДУСМОТРЕВАЙТЕ ИНТЕЛЛЕКТУАЛЬНЫЕ ИНТЕЛЛЕКТУАЛЬНЫЕ ИНТЕЛЛЕКТУАЛЬНЫЕ ИНСТРУМЕНТЫ SQL!

Вы уже встречали O'Neill?

Вместо этого используйте параметры.

Я признаю, однако, что белые списки будут работать лучше, чем черные списки


Re: EDIT:
Вы не должны делать такую ​​проверку на всех.
Если ваш код на стороне сервера может справиться с этим, нет ничего плохого в названии --'[email protected]_.
Если ваш серверный код не может его обработать, он должен.

+2

+1, но должен быть больше –

+0

Я использую параметры и проверку на стороне сервера. Это просто для проверки на стороне клиента. –

+0

+1 перестать кричать на меня :) – Fosco

3

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

1

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

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

+0

мы разрешили ирландским людям. –

+0

- зависит от того, Тим или Уильям. –

2

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

1

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

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