Developer Shield

Como ligar e usar o Developer Shield, a proteção de nomes internos em código e SQL, com a matriz de linguagens e os limites de cada uma.

Atualizado em

O Developer Shield troca nomes internos do seu código e do seu SQL, como tabelas, colunas, classes e funções, por pseudônimos antes do envio, sem quebrar a sintaxe. Quando a resposta da IA usa esses pseudônimos dentro de blocos de código, a Tiuri mostra os nomes originais na sua tela.

Como ligar

O Developer Shield vem desligado. Para ligar:

  • escolha o perfil Desenvolvimento ou Rigoroso no popup; ou
  • abra Configurações → Developer Shield e ligue “Proteção de código e SQL”.

Ele funciona no Chrome, no Edge e no Firefox (versão 140 ou mais recente).

Exemplo

-- Antes
SELECT nome, documento, renda_mensal
FROM clientes_pf
WHERE uf = 'ES' AND documento = '123.456.789-09';

-- Depois
SELECT TI_COLUMN_NAME_NAME_2VNXFSFX, TI_COLUMN_NAME_RECORD_2M83AD8B, TI_COLUMN_NAME_FIELD_Y70GZ1PA
FROM TI_TABLE_NAME_CUSTOMER_9YN4D88A
WHERE TI_COLUMN_NAME_FIELD_HD72ZG8C = 'ES' AND TI_COLUMN_NAME_RECORD_2M83AD8B = '{cpf:qzt6k2x8}';

Cada nome recebe sempre o mesmo pseudônimo dentro da conversa, em todas as ocorrências. O CPF é tratado pela detecção de dados pessoais.

Linguagens

Linguagem / formato Suporte O que protege
PostgreSQL Produção Schema, tabela, coluna, view, função, procedure, trigger, índice, sequência, papel, política, tipo, variável
T-SQL / SQL Server Produção Schema, tabela, coluna, view, função, procedure, índice, sequência
MySQL / MariaDB Produção Schema, tabela, coluna, view, índice, procedure, função, trigger, variável
SQLite Produção Schema, tabela, coluna, view, índice, trigger
Oracle / PL/SQL Produção Schema, tabela, coluna, view, índice, sequência, procedure, função, pacote, trigger, tipo, variável
JavaScript / TypeScript Produção Classes, funções, métodos, módulos relativos e nomes de negócio
Python Produção Classes, funções, métodos e nomes de negócio
Java Produção Pacotes, classes, métodos e nomes de negócio
C / C++ Produção Namespaces, classes, funções, nomes de negócio e nomes de macros definidas no trecho
C# Produção Namespaces, classes, records, interfaces, métodos e nomes de negócio
Go Produção Pacotes, tipos, funções, métodos e nomes de negócio
Shell (bash) Produção Nomes de funções e variáveis locais com nome de negócio, inclusive quando aparecem dentro de strings com aspas duplas
PowerShell Produção Funções, classes, métodos, propriedades e nomes de negócio (o $ é mantido)

“Nomes de negócio” são variáveis, parâmetros e campos com duas ou mais palavras ou com 10 caracteres ou mais, como settlement_batch. Nomes genéricos (i, data, result, status, self), nomes compostos só de palavras genéricas (base_url, page_size), APIs da plataforma, chaves de objeto e nomes JSX ficam como estão, de propósito.

O status de cada linguagem vem dos testes da extensão e aparece também em Configurações → Developer Shield.

Texto misturado

Você pode escrever a pergunta antes e depois do código, usar blocos com a linguagem indicada (por exemplo, ```sql) e mandar mais de uma linguagem na mesma mensagem, em blocos separados.

Quando o envio é bloqueado

O Developer Shield prefere bloquear a enviar algo sem proteção. O envio é bloqueado, com uma mensagem que diz o motivo, quando:

  • há código fora de um bloco que ele consegue analisar;
  • o SQL tem erro de sintaxe, o dialeto não é identificado ou mistura dialetos;
  • a análise não termina a tempo ou não consegue proteger todos os nomes com segurança.

Limites

  • Corpos de rotinas PL/pgSQL e LANGUAGE sql e SQL num único literal, como EXECUTE '...', EXEC('...'), sp_executesql N'...', EXECUTE IMMEDIATE '...' e PREPARE ... FROM '...', são analisados; SQL montado em strings (concatenação, variáveis ou format()) não é.
  • Sintaxe exclusiva do MariaDB, como tabelas versionadas pelo sistema, bloqueia o envio.
  • SQL sem marcas de dialeto é tentado com PostgreSQL, MySQL, SQLite, T-SQL e Oracle, nessa ordem; vale o primeiro que aceita o texto inteiro.
  • Em C e C++, parâmetros e corpo de macros nunca são reescritos, e nenhuma macro é renomeada quando o trecho usa # ou ##.
  • Em Shell, variáveis em MAIÚSCULAS ou exportadas, comandos e o texto literal das strings não são renomeados; referências a variáveis dentro de strings com aspas duplas são protegidas.
  • Pseudônimos que não estão no cofre da conversa ficam como estão na resposta; a Tiuri avisa quando não consegue restaurar um nome.

Credenciais no meio do código são tratadas pela detecção de segredos: veja Dados detectados.

Todas as páginas da documentação