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

В базах данных SQL одной из потенциальных уязвимостей является тот факт, что во многих базах данных первичный ключ или идентификатор для каждой записи данных представляет собой просто целое число, увеличивающееся на 1. Поэтому, если хакер хочет получить доступ к некоторой случайной записи, он может просто попробовать случайные целые числа и посмотрим, что произойдет.

UUID, который генерирует случайные строки букв и цифр, - отличный способ предотвратить эту проблему. Вместо использования простых целых чисел, каждый раз увеличивающихся на 1, идентификаторы вашей базы данных выглядят примерно так:

"0e212515–68b0–41b8–880a-fa4a9d818af6"
"27279e0a-dbaf-4b67–8323–0260193e5a92"
"311ca64f-1f1e-4360–8ae4–8dff9df1f2da"

Гораздо труднее угадать.

Итак, если вы ищете спокойствия, вот как настроить и запустить первичные ключи UUID с помощью бэкэнда Rails и базы данных PostgreSQL.

Если вы еще этого не сделали, сначала запустите новый проект в командной строке с rails new my-app -d=postgresql, заменив my-app на имя проекта по вашему выбору.

Затем, прежде чем создавать какие-либо другие миграции, введите rails g migration enable_uuid в командной строке. Это должно добавить новый файл миграции в папку db/migrate.

В этом новом файле в разделе def change добавьте enable_extension 'pgcrypto'.

Затем, чтобы фактически использовать строки UUID для ваших первичных ключей, перейдите к config/initializers и создайте файл generators.rb, если у вас его еще нет. Затем введите:

Rails.application.config.generators do |g|
  g.orm :active_record, primary_key_type: :uuid
end

Теперь вы готовы создавать любые будущие миграции и модели, которые могут вам понадобиться! Создайте их обычным образом, и их идентификаторы будут автоматически отформатированы как UUID.

И вы можете дышать немного легче, зная, что ваши первичные ключи теперь гораздо труднее угадать.