При авторизации записывать пользователю в сессию уникальных токен.
в целом нормально, но лучше не привязывать создание токена к авторизации, т.к. CSRF может быть и до авторизации, например CSRF на саму авторизацию. Создавайте его непосредственно при создании сессии. При этом чтобы не хранить токен на сервере и не создавать в явном виде, можно генерировать его как хэш, например MD5(sessionid,secret) - где secret некий ключ, известный только вашему серверу, который в случае необходимости можно поменять. В остальном - да, используйте его как скрытое поле во всех формах или как заголовок в ajax-запросах. Но если используете как скрытое поле в формах - избегайте GET-запросов, т.к. это потенциально может привести к раскрытию токена через Referer.