LW IT Solutions logo LW IT Solutions logo LW IT Solutions
« Przegląd bloga /Data Privacy / Czytanie ciągu TC: co stoi w 213...
Ten artykuł w innych językach:

Czytanie ciągu TC: co stoi w 213 bitach nagłówka

Czytanie ciągu TC: co stoi w 213 bitach nagłówka
Spis treści
  1. Stały początek: 213 bitów wraz z celami
  2. Osobna interpretacja dat i wersji
  3. Sekcje dostawców: długość nie mierzy zgody
  4. Aktualne reguły poza układem bitów
  5. Pytania i odpowiedzi
  6. Źródła

Ciąg TC przechowuje sygnały przejrzystości i zgody w zwartej postaci. Dekodowanie ujawnia zapisane wartości: bity celów, decyzje dotyczące dostawców i wersję listy dostawców. Sam odczyt nie dowodzi poprawności banera, ważności zgody ani respektowania decyzji przez dostawcę.

Format jest kodowany, a nie szyfrowany. Odczyt nie wymaga tajnego klucza. Ciąg nie jest również podpisanym dziennikiem audytu. Rzetelna kontrola łączy więc sygnały z rzeczywistym dialogiem, właściwą Global Vendor List (GVL) i obserwowanymi żądaniami.

Ciąg TC: 213 stałych bitów, potem zmienne sekcje dostawców
Zakodowane sygnały nie są podpisanym rejestrem zgody

Stały początek: 213 bitów wraz z celami

Każdy segment używa alfabetu Base64url, a jeden znak reprezentuje sześć bitów. Segmenty oddzielają kropki. Pierwsze sześć bitów zawiera wersję formatu: wartość 2 daje 000010, czyli znak C. Początkowe C wskazuje tę wartość pola wersji, ale nie potwierdza poprawności całego ciągu.

Segment główny zaczyna się od poniższych pól w podanej kolejności. Pozycje bitów liczone są od zera: pozycja 0 oznacza pierwszy bit. Stałe 213 bitów obejmuje już bity celów. Dane dostawców zaczynają się na pozycji 213, czyli od 214. bitu.

Pole Pozycje bitów Długość
Version 0–5 6
Created 6–41 36
LastUpdated 42–77 36
CmpId 78–89 12
CmpVersion 90–101 12
ConsentScreen 102–107 6
ConsentLanguage 108–119 12
VendorListVersion 120–131 12
TcfPolicyVersion 132–137 6
IsServiceSpecific 138–138 1
UseNonStandardTexts 139–139 1
SpecialFeatureOptIns 140–151 12
PurposesConsent 152–175 24
PurposesLITransparency 176–199 24
PurposeOneTreatment 200–200 1
PublisherCC 201–212 12

Stały początek kończy się po pierwszych trzech bitach 36. znaku Base64url. Pozostałe trzy bity należą już do danych dostawców. Pierwszych 35 znaków nie wystarcza; 36 pełnych znaków zawiera więcej niż stały początek.

Osobna interpretacja dat i wersji

Pola czasu nadal mają 36 bitów i wyrażają dziesiąte części sekundy od epoki Uniksa. Zgodnie z aktualną specyfikacją Created i LastUpdated zawierają jednak tę samą datę aktualizacji z dokładnością do dnia UTC. Pomnożenie przez 100 daje milisekundy JavaScript. Jednostka zapisu nie oznacza rejestracji czynności wyrażenia zgody z dokładnością do jednej dziesiątej sekundy.

Stara data aktualizacji uzasadnia sprawdzenie odnawiania wyborów i przypomnień. Aktualna data nie dowodzi świeżej zgody, a porównanie z okresem trzynastu miesięcy nie odtwarza historii zgód. Specyfikacja techniczna odwołuje się do przypomnień co najmniej raz na trzynaście miesięcy. Ciąg nie zastępuje związanych z tym dowodów.

Wersja formatu 2, wersje frameworka takie jak TCF 2.3 lub 2.4, wersja polityki i wersja GVL to różne identyfikatory. Wartość polityki 4 wprowadzono wraz z TCF 2.2. Wartość co najmniej 4 nie dowodzi wdrożenia wszystkich aktualnych wymagań. VendorListVersion wskazuje wykorzystaną wersję GVL, a nie faktyczne pokazanie w dialogu wszystkich dostawców z tej listy.

Sekcje dostawców: długość nie mierzy zgody

Sekcja dostawców zaczyna się od 16-bitowego maksymalnego identyfikatora i jednobitowego oznaczenia kodowania. Przy polu bitowym następuje po jednym bicie na każdy identyfikator do tej granicy. Kodowanie zakresami dodaje 12-bitową liczbę wpisów. Każdy wpis zawiera flagę zakresu oraz 16-bitowy identyfikator początkowy lub pojedynczy. Kolejne 16 bitów z końcem występuje tylko przy zakresie.

Dla maksymalnego identyfikatora 800 pole bitowe wraz z początkiem sekcji zajmuje 817 bitów. Pięćdziesiąt pojedynczych identyfikatorów zapisanych zakresami wymaga 879 bitów: 17 + 12 + 50 × 17. Jeden ciągły zakres wymaga tylko 62 bitów: 17 + 12 + 33. Przy wyborze krótszej reprezentacji w pierwszym przypadku wygrywa pole bitowe, a w drugim zakres. Zgoda na wszystko nie gwarantuje zatem zawsze krótkiego ciągu.

Zgody dostawców i sygnały uzasadnionego interesu znajdują się w odrębnych sekcjach. Ograniczenia wydawcy i dodatkowe segmenty również wpływają na długość. Długi ciąg sam w sobie nie oznacza szerokiej zgody, uszkodzenia ani dużej liczby wybranych dostawców.

Aktualne reguły poza układem bitów

TCF 2.2 usunęło uzasadniony interes jako dopuszczalną podstawę dla celów 3–6. Dla celu 1 już wcześniej przewidziana była zgoda; zależna od jurysdykcji flaga PurposeOneTreatment dotyczy innej kwestii. Cele specjalne mają osobną przestrzeń numerów i nie należą do zwykłych bitów celów.

Przy obecnie zdefiniowanych celach 1–11 zarezerwowane pozycje 12–24 nie oznaczają dodatkowych wyborów. Nieoczekiwanie ustawione bity wymagają porównania z właściwą specyfikacją i GVL. Taki wynik wskazuje niespójność, a nie autora implementacji. Same sygnały celu nie uprawniają też każdego dostawcy do przetwarzania: znaczenie mają sygnały dostawcy, ujawnienie, zadeklarowane cele i ograniczenia wydawcy.

TCF 2.3 wprowadziło obowiązkowy segment DisclosedVendors dla ciągów tworzonych od 1 marca 2026 r. Starsze ciągi bez tego segmentu zachowują wyjątek przejściowy; brak segmentu nie jest więc identycznym ustaleniem dla każdego historycznego ciągu. Typ segmentu 1 oznacza ujawnionych dostawców, a opcjonalny typ 3 cele wydawcy. Dawny typ 2, dotyczący dozwolonych dostawców, usunięto w TCF 2.2.

TCF 2.4 wprowadziło następnie zaktualizowane informacje o funkcjach. Oficjalny termin wdrożenia dla środowisk WWW upłynął 23 października 2026 r., a dla aplikacji mobilnych i CTV upływa 23 lutego 2027 r. Nie zmienia to sześciobitowego pola wersji formatu na 2.4. Dekoder bitów nie sprawdza wymaganych tekstów ani sposobu prezentacji dialogu.

Pytania i odpowiedzi

Czy euconsent-v2 jest obowiązkowe?

Nie. CMP wybiera mechanizm przechowywania; możliwa jest inna nazwa ciasteczka albo zapis bez ciasteczek. Brak tego ciasteczka nie dowodzi ani braku, ani poprawności zarządzania zgodami.

Który interfejs przeglądarki jest właściwy?

getTCData jest przestarzałe od TCF 2.2. Wspierane rozwiązanie używa addEventListener, sprawdza powodzenie wywołania zwrotnego, stan CMP i zdarzenia, a następnie odczytuje dostępny tcString. Pierwsze wywołanie podczas ładowania CMP może zawierać niepełne dane. Jednorazowy odczyt diagnostyczny powinien usunąć nasłuch przez removeEventListener z otrzymanym identyfikatorem po uzyskaniu zamierzonego obrazu stanu. Aplikacja obserwująca późniejsze zmiany potrzebuje odpowiedniej trwałej subskrypcji.

Jak wykrywać niepełne dane?

Dekoder sprawdza alfabet, długości pól, liczby wpisów, zakresy i typy segmentów. Samo dekodowanie Base64 nie weryfikuje zgodności z polityką. Przy dekoderach bajtowych zamiana alfabetu i ewentualne dopełnienie dotyczą każdego segmentu osobno. Bezpośrednia zamiana znaku na sześć bitów pozwala uniknąć błędnych założeń o granicach bajtów.

Brakujące bity mogą wynikać z błędów kopiowania, zapisu, kodowania albo transportu. Limit długości jest możliwą przyczyną, nie diagnozą. RFC 6265 zaleca obsługę co najmniej 4096 bajtów na ciasteczko w przeglądarkach ogólnego zastosowania, łącznie z nazwą, wartością i atrybutami; używa SHOULD, a nie MUST. Zbyt duże ciasteczko lub nagłówek może zostać odrzucony zamiast po cichu obcięty. Porównanie zapisanego ciągu, wyniku CMP API i wartości przesłanej pomaga zlokalizować różnicę.

Co obejmuje praktyczna kontrola?

Powtarzalna kontrola zapisuje decyzję testową, odpowiadający stan dialogu, odczytane sygnały celów i dostawców, istotne ograniczenia oraz właściwą wersję GVL. Obserwacja sieci pozwala następnie sprawdzić zgodność przetwarzania z oczekiwaną decyzją. Żadna pojedyncza kontrola nie potwierdza pełnej zgodności z prawem.

Lukas Wójcik

Lukas Wójcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Kontakt

Masz pytanie lub pomysł na projekt internetowy? Napisz krótko, o co chodzi. Formularz korzysta z reCAPTCHA do ochrony przed spamem.

Napisanie komentarza

Obserwacje z innych wdrożeń, zastrzeżenia i pytania są tu mile widziane.

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.