Таблица cache_token
Таблица cache_token является частью системы кеширования Drupal и предназначена для хранения сгенерированных токенов (уникальных случайных строк), которые используются для защиты от CSRF-атак, проверки подлинности форм, авторизации URL-адресов и обеспечения целостности сеансов пользователя.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
cid |
varchar(255) |
Первичный ключ. Идентификатор кеш-записи (Cache ID). Для токенов обычно содержит префикс и значение самого токена или идентификатор пользователя. |
data |
longblob |
Сериализованные данные, которые необходимо закешировать. Может содержать метаинформацию о токене, время его создания или связанные данные. |
expire |
int |
Временная метка Unix, указывающая, когда запись в кеше становится недействительной. Значение 0 означает, что запись не имеет срока действия.
|
created |
int |
Временная метка Unix, указывающая, когда была создана запись в кеше. Используется для подсчета возраста записи. |
serialized |
smallint |
Флаг, указывающий, были ли данные сериализованы перед сохранением. Значение 1 означает "сериализовано", 0 - "не сериализовано".
|
tags |
longtext |
Список тегов, связанных с кеш-записью, разделенных переводом строки. Позволяет инвалидировать группы связанных записей. |
checksum |
varchar(255) |
Контрольная сумма, используемая для проверки целостности тегов при инвалидации кеша. |
Как это работает
Drupal генерирует уникальные токены для пользователей, которые используются для защиты различных операций (например, отправка формы входа, сброс пароля, вызов AJAX). Эти токены сохраняются в таблице cache_token с определенным временем жизни (поле expire).
Когда пользователь выполняет действие (например, отправляет форму), система проверяет переданный токен. Drupal ищет его в кеше (таблица cache_token). Если токен найден, действителен (не истек срок его действия) и соответствует ожидаемому значению, действие считается авторизованным. В противном случае запрос отклоняется.
Toкены часто привязываются к конкретному пользователю (uid) и сессии, что предотвращает их использование злоумышленником от имени другого пользователя. Инвалидация (очистка) кеша токенов происходит либо по истечении срока их действия, либо принудительно при сбросе всего кеша или определенных тегов.
Использование отдельной таблицы cache_token, а не общей cache, позволяет эффективно управлять сроком жизни именно токенов и очищать их, не затрагивая другие виды кешированных данных.
Пример SQL-запроса
Посмотреть все активные (не истекшие) токены можно следующим запросом:
SELECT cid, created, expire
FROM cache_token
WHERE expire = 0 OR expire > UNIX_TIMESTAMP()
ORDER BY created DESC;
Смотрите также
-
таблицу
cache_bootstrap,
которая хранит критически важный кеш для загрузки Drupal -
таблицу
cache_data,
которая является общей таблицей для хранения кешированных данных -
таблицу
sessions,
которая хранит активные пользовательские сессии -
таблицу
users,
которая содержит данные учетных записей пользователей