Ir para o conteúdo
Idioma: PT

Como um servidor lê o identificador que uma tag espelha na URL dela?

Como parte do endereço pedido. Um chip com espelhamento grava o identificador dele, e em alguns chips o contador de leitura, na URL em caracteres hexadecimais, numa posição escolhida quando a tag foi configurada. O servidor os extrai, confere o tamanho e os caracteres, e os trata como uma alegação sobre qual tag foi lida, não como prova.

O que chega ao servidor

O chip insere os caracteres no momento em que a tag é lida, então o celular recebe uma URL que já os contém, e a página da URL única explica por que isso torna distinguíveis tags gravadas de modo idêntico. O servidor recebe uma requisição comum para essa URL.

Ele só a recebe se o celular abrir o link. Um iPhone que lê uma tag em segundo plano mostra um aviso que tem de ser tocado, e a partir do Android 17 um celular Android mostra um também, segundo a página do comportamento do Android. Um usuário que o ignora leu a tag sem o servidor ficar sabendo.

O contador faz a conta dele por conta própria. Numa NTAG213 ele incrementa na primeira leitura depois de a tag entrar no campo, segundo a ficha dela no wakdev.com, venha ou não uma requisição em seguida, então saltos entre os valores que um servidor recebe são normais: a página dos códigos rotativos diz que os contadores saem de sincronia.

Extrair os valores

Onde os caracteres caem se decide quando a tag é configurada, pelos ajustes de espelhamento que a ficha do chip descreve. Ponha-os num parâmetro de consulta nomeado ou num trecho fixo do caminho da URL gravada na tag, e interprete a requisição por esse nome, não contando caracteres a partir do começo do endereço.

O identificador de uma NTAG213 tem sete bytes, segundo a mesma ficha, então ele chega como quatorze caracteres hexadecimais; o contador dela tem 24 bits, seis caracteres. Um chip de outra família tem outros tamanhos, e o código os tira da ficha desse chip em vez de os tirar da primeira tag que encontrou.

Conferir antes de usar

Qualquer um consegue digitar a URL, então os valores são entrada como qualquer outra. Confira o tamanho e que cada caractere seja hexadecimal, compare sem levar em conta maiúsculas e minúsculas, e rejeite qualquer outra coisa antes que ela chegue a uma consulta de banco de dados ou a um registro que alguém vai ler.

Um formato válido não diz nada sobre existência. Procure o identificador na lista das tags instaladas, o controle de qual tag guarda o quê, e trate um identificador desconhecido como desconhecido, não como uma tag nova a criar.

Onde o identificador pertence a um objeto que uma pessoa carrega, como um crachá, esse controle vira dado sobre essa pessoa, e a página da proteção de dados cobre o que vem em seguida.

Por que isso não prova nada

O identificador espelhado é legível por qualquer um que toque a tag, e a URL que o carrega dá para copiar e repetir sem a tag. A página da URL única diz isso sem rodeios: ele identifica em vez de autenticar.

Um contador simples acrescenta pouco. Um servidor que lembra o maior valor visto para cada identificador consegue rejeitar uma URL antiga repetida como está, mas qualquer um consegue digitar um número mais alto, e quem tem a tag em mãos lê um novo, o limite que a página dos códigos rotativos descreve.

A prova precisa de um valor que o servidor consiga verificar criptograficamente. A NTAG 424 DNA insere um AES CMAC derivado do identificador dela e de um contador de 24 bits, verificável do lado do servidor, segundo a ficha dela no wakdev.com. Como verificá-lo pertence à documentação desse chip, e o que o verificador tem de guardar, à página da verificação.

Perguntas frequentes

Por que duas requisições carregam o mesmo valor de contador?

A mesma URL foi aberta duas vezes sem uma leitura nova, por um recarregamento ou por uma cópia do link. Uma leitura nova da tag teria produzido um valor novo.

Por que o contador salta entre requisições?

A tag foi lida sem o link ser aberto, e o contador incrementa a cada leitura. É disso que a página dos códigos rotativos fala quando diz que os contadores saem de sincronia.

O identificador espelhado é único?

Ele é o identificador de fábrica, feito para ser único dentro da alocação do fabricante, e legível por qualquer um. Ele identifica uma tag, não a autentica.

Um servidor consegue distinguir uma tag autêntica de uma URL copiada?

Não com um espelho simples. Isso exige um chip que insira um valor criptográfico, como o CMAC da NTAG 424 DNA, e um servidor que guarde a chave.