Система юзеров - вопросы по организации и безопасности

Сенсей

Новичок
Система юзеров - вопросы по организации и безопасности

Делаю систему юзеров.... ну регистрация там... авторизация....
С этим проблем нет...

Но есть сомнения насчет ЛОГИНОВ которые придумывают юзеры...

Часто видел как на некоторых сайта вроме как букв ничего использовать не разрешают....

Пример: Vasya

У других можно например кроме букв там символы еще ипользовать ...

Пример: -= Vasya =-

Третим вообще все пофиг:
Пример : -= <Vasya@Pamper's> =-

Так вот ... по какому пути идти?

юзеру ничего не говорить .. а просто написать функцию которая бы автоматом очищала ник и сотавляла от него лишь буквы?

Или же все таки запретить кое какие символы?

Чего нужно бояться в НИКе юзера?

Мое мнение: разрешить любые символы... но что бы там умники не натворили делов - там где вывожу этот НИК просто обрабатывать через htmlspecialchars

Либо же простенько strip_tags + htmlspecialchars при выводе...

Направьте на истинный путь...
 

Erise

Guest
ИМХО, допустить можно цифры, буквы латинского и/или русского алфавита, восклицательный знак, пробел и нижнее подчёркивание. Остально, имхо, пользователю в логине ни к чему.
Проверять через preg_match()
 

Cougar

Кошак
Я разрешаю всё, кроме диапазона от 0x00 до 0x1F включительно. При выводе, разумеется, htmlspecialchars().
Это больше вопрос сетевого этикета, чем программирования.
 

SiMM

Новичок
Автор оригинала: Cougar
Я разрешаю всё, кроме диапазона от 0x00 до 0x31 включительно.
Интересно, а символы '0' и '1' тебе чем не угодили? Да и всякие '$', пробел, etc?
 

kolemming

Новичок
ИМХО.
Еще бы не помешала система при которой все русские буквы, которые пишутся аналогично латинским конвертировались бы в латинские, что бы избежать задвоение логинов, от особо умных юзеров. Но это уже зависит от целей сайта, например для чатов и форумов мне кажется это актуально.
 

Erise

Guest
kolemming, проще допустить символы только одного алфавита. Либо логин весь из латиницы, либо из кириллицы.
К твоему имхо.
 

Cougar

Кошак
SiMM
Опс. Да, ошибся. Написал десятичные значения вместо шестнадцатиричных. Уже исправил.
 

fog

Рыцарь Джедай
Сенсей, "очищать" логин от неугодных тебе символов при регистрации нельзя, это неуважение к пользователю: он себе логин выбрал, а ты без его ведома изменил его.

Либо проверяй логин на допустимые символы, либо допускай все символы, но следи чтобы спец. символы в логине правильно обрабатывались.

Но в любом случае сначала сообщай пользователю правила, и если он ввёл недопустимый логин - предложи исправить.
 

Cougar

Кошак
SiMM
Да, бывает :) Опять исправил :)
fog
Некоторые символы имеет смысл резать без предупреждения:
1. такие, как \r, \n, \t...
2. несколько пробелов подряд тоже имеет смысл сократить до одного пробела
3. Ну, и, разумеется, trim() тоже стоит пользовать, не уведомляя об этом пользователя
 

Cougar

Кошак
dnes
нет. Они пересекаются, конечно, но не полностью. trim() не уберёт лишние символы в середине строки.
 

Сенсей

Новичок
Вот и первая трабла ....

Захотелось девочке такой ник: +*+Bab04kA+*+

Сказано - сделано...

Но не пашет ... в GET запросе :

&username=+*+Bab04kA+*+&check_num=blablabla

В базу запрос приходит такой :

user_nick_name=' * Bab04kA * '

То есть без плюсиков ...
Решение только запрещение плюса в логинах? А если очень хочется такой ник?
 

4m@t!c

Александр
Да не может быть такого, что ты говоришь, символы будут преобразованы. А если сделаешь вывод элемента массива GET, то получишь все знаки, что вводил...
 

Сенсей

Новичок
4m@t!c
А те говорю что может :)

test.php

<?php
echo $_GET['a'];

print_r($_GET);
?>

/test.php?a=+*+Bab04kA+*+

В итоге:

Код:
* Bab04kA * Array ( [a] => * Bab04kA * )
SIMM, ERIS

<?php
echo urlencode($_GET['a']);
?>

Получаю :

Код:
+%2A+Bab04kA+%2A+
 

_RVK_

Новичок
Имхо спецсимволы нужно запрещать для повышения читабельности и запоминаемости ников. Если юзеры начнут использовать ники типа $%^&* а второй $%<&*, то отличить их будет крайне сложно, не говоря уже о том, что запомнить или произнести ник в слух. Об этом тоже нужно задумываться. Лучший выход, опять же ИМХО, это разрешать некоторые спецсимволы(@[]|!-_ и т.д.), и контролировать что бы их в нике не было больше чем букв.
 

ForJest

- свежая кровь
Сенсей
Как мне кажется ограничение на буквы/цифры/подчёркивание имеет свой смысл, когда юзеру заводится под этот login допустим почтовый ящик или выделяется хостинг или ещё что - это ограничение наложено обычно операционной системой.
Так что всё в основном зависит от использования этой информации о пользователе в дальнейшем. Исходя из того, где и как она будет использована и стоит ограничивать/не ограничивать набор символов.
 
Сверху