2016-08-16 3 views
0

Допустим, у меня есть криптографически безопасная случайно сгенерированная строка, и я добавляю к ней разделитель и идентификатор пользователя пользователя и использую его как идентификатор сеанса. Вариант использования - предотвращать столкновения. Будет ли это сделать мою систему менее безопасной, чем если бы я просто использовал произвольно сгенерированную строку?Является ли добавление идентификатора пользователя к идентификатору сеанса небезопасным?

+1

Я чувствую, что этот вопрос лучше подходит для http://security.stackexchange.com/ – Derek

ответ

1

Давайте разделим ответ на два предположения:

Если вы уже отправить идентификатор пользователя каким-либо другим способом (другое поле, другое печенье, и т.д.), и это будет видно злоумышленнику доступ к идентификатору сеанса то ваш подход не добавляет поверхности атаки к реализации, и поэтому риск остается неизменным.

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

Наконец, я беспокоюсь о ваших рассуждениях. Если есть какая-либо разумная математическая вероятность столкновения, тогда ваш sessionID недостаточно длинный для цели, в которой вы пытаетесь его использовать. Err на безопасной стороне.

0

Если столкновения представляют собой риск, то ваш идентификатор сеанса не содержит почти энтропии для обеспечения безопасности.

От OWASP Session Management Cheat Sheet:

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

Так что, если ваш идентификатор сеанса может быть успешно догадывался даже не пытаясь, у вас есть большие проблемы. Если сама система генерирует идентификаторы, которые сталкиваются, то ваш источник энтропии нуждается в срочном пересмотре.

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

Таким образом, убедитесь, что ваши идентификаторы сеанса имеют энтропию не менее 64 бит и что источник энтропии является хорошим (например, используйте CSPRNG, а не PRNG или используйте источники энтропии, уникальные для вашего приложения).

Смежные вопросы