diff --git a/tradein-mvp/backend/data/sql/274_yandex_session_cookies.sql b/tradein-mvp/backend/data/sql/274_yandex_session_cookies.sql index 949db244..e3b56240 100644 --- a/tradein-mvp/backend/data/sql/274_yandex_session_cookies.sql +++ b/tradein-mvp/backend/data/sql/274_yandex_session_cookies.sql @@ -1,9 +1,16 @@ -- 274_yandex_session_cookies.sql -- Purpose: Encrypted storage for Yandex.Nedvizhimost browser session cookies. -- Замер на проде (сайдкар, две карточки, вперемежку с/без кук, 2026-08-28): --- авторизованная сессия отдаёт mainPhone=1 и на 11 больше уникальных --- телефонов продавца (90→101 / 89→100) по сравнению с анонимным запросом — --- то есть контакты продавца физически недоступны без валидной сессии. +-- author.phoneNumbers присутствует ТОЛЬКО в авторизованном режиме +-- (0 без кук → 2 с куками, одинаково на обеих карточках), плюс три +-- номера в author.phones сверху. Это контакт продавца с тегом канала +-- и redirectId. +-- NB: mainPhone НЕ собирать — он лежит в паспортном блоке рядом с +-- login/passportHost/passportPhones, то есть это номер НАШЕЙ учётки, +-- а не продавца. Первая версия этого замера приняла его за данные +-- объявления; счётчики по конкретным полям это опровергли. +-- encryptedPhones одинаков в обоих режимах (54) — зашифрованные токены +-- отдаются всегда, различие не в них. -- Uses pgcrypto pgp_sym_encrypt for AES encryption at rest (зеркалит -- 027_cian_session_cookies.sql / 174_domclick_session_cookies.sql). -- Dependencies: @@ -20,10 +27,16 @@ -- числового id аккаунта, доступного из cookie-дампа; используем произвольную -- текстовую метку аккаунта, которую задаёт оператор при заливке дампа. -- --- Sources: issue #3192 (Yandex session cookies — mainPhone/contact reveal) +-- Sources: issue #3192 (Yandex session cookies — author.phoneNumbers reveal) BEGIN; +-- #2752: без lock_timeout CREATE INDEX встанет в очередь за чужой долгой +-- сессией и уведёт за собой запросы приложения — таблица новая и пустая, но +-- очередь блокировок этого не знает. Гейт check-migration-lock-timeout.py +-- держит правило на каждом PR. +SET LOCAL lock_timeout = '5s'; + CREATE EXTENSION IF NOT EXISTS pgcrypto; CREATE TABLE IF NOT EXISTS yandex_session_cookies (