Редактировать : Этот ответ по крайней мере частично неверен.Использование идентификатора сеанса в качестве токена CSRF может привести к перехвату сеанса, если, например, ссылки копируются + вставляются.См. Ответ и комментарии ircmaxell.
Да, поскольку идентификатор сеанса является случайным и связанным с пользователем, это будет приемлемой формой защиты CSRF.
Тем не менее, было бы еще безопаснее использовать другое случайное число, если нет вероятности, что вредоносный JavaScript сможет захватить cookie сеанса (и идентификатор сеанса) ... Но если япришлось выбирать между «без токена CSRF» и «идентификатором сеанса в качестве токена CSRF», я всегда выбирал сеанс в качестве токена CSRF.
Единственная потенциальная проблема с использованием идентификаторов сеанса в качестве токенов CSRF:если бы кто-то смог украсть токен CSRF, он также мог бы украсть связанную с ним сессию ... Но я не могу придумать разумного сценария, в котором это было бы проблемой.
Теперь из обсужденияОтвет Марка Б ниже: использование nonce обеспечит другие преимущества (например, предотвращение повторной отправки форм) ... Но это не более безопасно от атак CSRF, чем идентификатор сеанса (содно предупреждение, которое я упоминаю в первом втором абзаце).
См. также: Маркер проверки CSRF: идентификатор сеанса безопасен?