Как санировать имя пользователя, которое будет в URL

1

Что такое хороший фильтр регулярных выражений для имен пользователей? [A-Za-z0-9 ] хорошо, или это слишком негибко? Какие еще вещи я должен искать? (Обрезание пробелов?)

  • 0
    Это также будет отображаться, поэтому я не хочу, чтобы это было очень легко подделать под другим пользователем (скажем, с пробелом в конце)
Теги:

3 ответа

2
Лучший ответ

Это нормально для un, но вы можете позволить им использовать -, _, %, @ и . , (В принципе, [a-zA-Z0-9._%+-]). Многим людям нравится использовать их электронную почту для имени пользователя, и это охватывает более 99% из них. В ситуациях с низкой степенью безопасности я говорю "давайте".

  • 0
    Как насчет подчеркивания?
  • 0
    @machine Первоначально я предложил \w а затем по какой-то причине удалил это. Я добавил это обратно.
3

Просто закодируйте имя пользователя, когда вы используете его в URL-адресе.

  • 0
    ... и разрешить что угодно. Мне нравится, как Drupal позволяет использовать любой символ в имени пользователя. Мне не нравится, как Django не допускает пробелов, без какой-либо веской причины, о которой я могу подумать (хотя, признаюсь, я на самом деле не смотрел).
1

Ваш комментарий к вашему первоначальному ответу - настоящая "проблема" здесь. Кодирование имени пользователя base64 или что-то другое при их передаче прост, но если вы разрешаете своим пользователям выбирать произвольные имена пользователей Unicode, они могут легко имитировать других.

Основная идея заключается в том, что в unicode есть много символов, которые при одинаковом образе кодируются по-разному. См. Здесь, чтобы получить более подробное описание атак гемографии. Не знаю, есть ли там библиотека, которая обрабатывает это разумно, но если вам нужно простое решение регулярного выражения, вы действительно должны придерживаться ограниченного диапазона символов

  • 0
    спасибо, это правильно, может быть, я буду придерживаться диапазона.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню