Генерация w/PHP Сильного Уникального идентификатора пользователя и MySQL

Необходимо принять кодирование во внимание, потому что 1 символ мог быть представлен 1 или более байты (до приблизительно 6), и различная кодировка будет рассматривать эти байты по-другому.

у Joel есть регистрация на этом:

Абсолютный минимум Каждый Разработчик программного обеспечения Absolutely, Положительно Должен Знать О Unicode и Наборах символов (Никакие Оправдания!)

5
задан brack 13 January 2011 в 21:14
поделиться

4 ответа

Одно: если вы не доверяете пользователям их идентификаторы, отправка их через GET или POST не сработает; все они видны мотивированным пользователям.


Я бы использовал SHA256, используя строку salt.counter.time, и использовал бы вывод для генерации идентификаторов GUID для фактического идентификатора. Это сведет к минимуму вероятность коллизий.

Вам придется использовать CHAR для MySQL для хранения GUID.

См. Комментарии на http://us2.php.net/manual/en/function.uniqid .php для получения более подробной информации. AFAIK GUID не является частью ядра PHP, поэтому вам придется немного подделать его.

5
ответ дан 14 December 2019 в 01:13
поделиться

Если вы используете идентификатор пользователя как способ разрешить пользователю что-либо делать с вашей службой, если один пользователь «угадает» идентификатор пользователя другого, он сможет сделать что бы он ни захотел с этой учетной записью?

У вас нет другого пароля или чего-то подобного?


Что ж, в таком случае вам нужно что-то совершенно уникальное, не так ли ;-)
(Надеюсь, я правильно понял вопрос - но это может быть не так - извините, если это не так)

Что вы думаете об использовании Глобального уникального идентификатора (например, например, 61350955-9755-4AF3-8C19-6DBC42CA69E2 ) для ваших пользователей?
Чтобы увидеть пример того, как они выглядят, взгляните на http://createguid.com/


В качестве примечания, этот GUID довольно длинный; что означает много байтов в вашей БД, если у вас миллионы пользователей ... Так что, вероятно, его не следует использовать в качестве какого-либо первичного / внешнего ключа.

А как насчет использования наименьшего возможного целого числа (которое соответствует числу пользователей) в качестве первичного / внешнего ключа, так как он будет дублироваться во многих местах приложения; и сохранить ли "длинный идентификатор пользователя" в таблице пользователей только один раз?

3
ответ дан 14 December 2019 в 01:13
поделиться

Приходилось ли вам использовать UUID ?

Быстрый поиск в Google дает хорошие ресурсы / ссылки.

0
ответ дан 14 December 2019 в 01:13
поделиться

Лично я использую md5 (uniqid (mt_rand (), true)), который создает 32-символьный идентификатор (128-битное шестнадцатеричное число), который чрезвычайно трудно предсказать.

0
ответ дан 14 December 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: