Команда Бенджамина попыталась сгенерировать уникальный идентификатор сессии, который трудно угадать. Они использовали ошибочный подход, заключающийся в конкатенации случайных чисел, генерируемых функцией `mt_rand`, пока не будет достигнута строка из 32 символов. Функция `mt_rand` не является криптографически безопасной и генерирует предсказуемые числа. Затем команда передала строку функции `uniqid`, которая также генерирует некриптографически безопасные уникальные идентификаторы, и добавила ещё случайности. Наконец, они использовали алгоритм MD5 для сокращения строки до хеша, что может привести к коллизиям хешей. Этот подход небезопасен и демонстрирует недостаток понимания принципов безопасности. В целом рекомендуется использовать проверенные, криптографически безопасные методы генерации случайных байтов, а не пытаться реализовывать их самостоятельно. Подход команды является примером того, как *не следует* генерировать безопасный идентификатор сессии. Лучше полагаться на проверенные решения и избегать самостоятельной разработки функций безопасности. Последствия ошибок в безопасности могут быть серьёзными, и при разработке программного обеспечения необходимо уделять приоритетное внимание безопасности.
thedailywtf.com
CodeSOD: My Identification
Create attached notes ...