почему регистрация пользователя должна быть регулярной? - PullRequest
2 голосов
/ 27 января 2010

Я программирую регистрацию пользователя. Однако я обнаружил, что характер, ограничивающий «имя пользователя» из примеров кодов, таких как «.», «», «-», принят, без пробелов или других пробелов и т. Д.

Нужны ли эти ограничения?

Я использую MySQL + PHP. Если я приму следующие несколько способов:

  1. изменить параметры сортировки столбца на 'utf8_general_ci';
  2. подключить функцию 'mysql_escape_string' или 'mysql_real_escape_string' к PHP;
  3. создать таблицу отношений для username <-> userID («username» - это то, что вводит клиент, userID - это INT). Кроме того, просто используйте «userID» в базе данных, но «username» отображается только в HTML.

Мне действительно нужно регулярное выражение?

Спасибо за вашу помощь.


PS: я китаец, поэтому требуются китайские иероглифы.

Ответы [ 3 ]

1 голос
/ 27 января 2010

Эти ограничения не обязательны, однако вы должны убедиться, что имя пользователя является допустимой и уникальной строкой (с регулярным выражением или без него)

когда дело доходит до извлечения уязвимых символов из строк и внедрения MySQL, я бы посоветовал использовать расширение Mysqli для подготовленных операторов, которое заботится о экранировании, и вам не нужно экранировать каждую строку вручную

1 голос
/ 27 января 2010

Так как это веб-приложение, кроме использования mysql_real_escape_string, я бы также рекомендовал удалить или запретить все, что может создавать HTML. Обычно достаточно запретить "<" и ">".

Вы действительно не хотите, чтобы какой-либо пользователь вводил свое имя как:

<script src=http://malicious/script.js></script>

Альтернативное решение - использовать htmlspecialchars при выводе данных на вашу страницу.

0 голосов
/ 27 января 2010

все зависит от вас, но, по моему мнению, использование mysql_real_escape_string подойдет (и я довольно параноик)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...