Лучшие практики вокруг генерации маркеров OAuth?

Шаблоны являются очень мощным механизмом, который может упростить много вещей. Однако для использования их правильно требует большого количества времени и опыта - для решения, когда их использование является соответствующим.

Для меня самые важные преимущества:

  • сокращение повторения кода (универсальные контейнеры, алгоритмы)
  • сокращение повторения усовершенствованного кода (MPL и Fusion)
  • статический полиморфизм (=performance) и другие вычисления времени компиляции
  • основанный на политике дизайн (гибкость, возможность многократного использования, более легкие изменения, и т.д.)
  • увеличивающаяся безопасность бесплатно (т.е. анализ размера через Единицы Повышения, статические утверждения, проверки понятия)
  • функциональное программирование (Финикс), отложенные вычисления, шаблоны выражения (мы можем создать Проблемно-ориентированные встроенные языки в C++, у нас есть большая библиотека Proto, у нас есть Блиц ++)
  • другие менее захватывающие инструменты и приемы, используемые в повседневной жизни:
    • STL и алгоритмы (каково различие между for и for_each)
    • связывают, лямбда (или Финикс) (напишите более ясный код, упростите вещи)
    • Функция Повышения (делает обратные вызовы записи легче)
    • кортежи (как, универсально хешировать кортеж? Используйте Fusion, например...)
    • TBB (parallel_for и другой STL как алгоритмы и контейнеры)
  • , можно ли вообразить C++ без шаблонов? Да я могу в ранние времена, Вы не могли использовать их из-за ограничений компилятора.
  • Вы записали бы в C++ без шаблонов? Нет, поскольку я потерял бы многие упомянутые выше преимущества.

Оборотные стороны:

  • Время компиляции (например, добавляют Сприт, Финикс, MPL и некоторый Fusion и Вы может пойти для кофе)
  • Люди , кто может использование и понимать, что шаблоны не настолько распространены (и эти люди полезны)
  • Люди , кто думает, что они могут использование и понимать, что шаблоны довольно распространены (и эти люди опасны, поскольку они могут сделать ад из Вашего кода. Однако большинство из них после некоторого образования/менторства присоединится к группе, упомянутой в предыдущей точке)
  • шаблон export поддержка (отсутствие)
  • , сообщения об ошибках могли быть менее загадочными (после того, как некоторое изучение Вас может найти то, в чем Вы нуждаетесь, но все еще...)

я настоятельно рекомендую следующие книги:

98
задан Manikandan C 27 September 2018 в 17:53
поделиться

1 ответ

OAuth ничего не говорит о токене, за исключением того, что с ним связан секрет. Так что все схемы, которые вы упомянули, будут работать. Наш токен развивался по мере роста сайтов. Вот версии, которые мы использовали раньше,

  1. Наш первый токен - это зашифрованный BLOB с именем пользователя, секретом токена, сроком действия и т. Д. Проблема в том, что мы не можем отозвать токены без какой-либо записи на хосте.

  2. Итак, мы изменили его. для хранения всего в базе данных, а токен - это просто случайное число, используемое в качестве ключа к базе данных. У него есть индекс имени пользователя, поэтому легко перечислить все токены для пользователя и отозвать его.

  3. У нас довольно мало хакерских действий. При использовании случайного числа мы должны обратиться к базе данных, чтобы узнать, действителен ли токен. Итак, мы снова вернулись к зашифрованному BLOB. На этот раз токен содержит только зашифрованное значение ключа и срок действия. Таким образом, мы можем обнаруживать недействительные или просроченные токены, не обращаясь к базе данных.

Некоторые детали реализации, которые могут вам помочь,

  1. Добавьте версию в токен, чтобы вы могли изменить формат токена, не нарушая существующие. Все наши токены имеют первый байт в качестве версии.
  2. Используйте URL-безопасную версию Base64 для кодирования BLOB, чтобы вам не приходилось сталкиваться с проблемами кодирования URL, что затрудняет отладку с помощью подписи OAuth, потому что вы можете см. базовую строку с тройным кодированием.
92
ответ дан 24 November 2019 в 05:18
поделиться
Другие вопросы по тегам:

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