Todos os artigos
-
Prevenção de cross-site scripting com codificação de saída
Faça o escape dos dados conforme o contexto exato em que são inseridos (texto HTML, atributo, JavaScript, URL, CSS), use templates que fazem escape por padrão, nunca monte HTML por concatenação de strings e reforce tudo com uma CSP rigorosa.
-
Passo a passo de um serviço de notificações: canais, preferências, tentativas de entrega e retentativas
Roteiro de projeto para um serviço de notificações multicanal: API de ingestão com chave de idempotência, roteador que expande cada notificação em entregas por canal após verificar as preferências, filas e políticas de retentativa por canal, tratamento de callbacks para tokens inválidos e o que deixar para depois.
-
Sintaxe de intervalos de versão em npm, Cargo, pip, Composer, módulos Go, Maven, NuGet e Bundler
Os operadores caret e til não significam o mesmo em todos os ecossistemas, os módulos Go não têm intervalos, e um número de versão isolado é um mínimo inclusivo no NuGet, mas apenas uma sugestão flexível no Maven.
-
Validação nativa de formulários em HTML: required, pattern, type e a Constraint Validation API
O HTML valida os controles de um formulário antes do envio, sem script: required, minlength, min/max, pattern e inputs tipados definem restrições, o navegador bloqueia o envio e mostra uma mensagem, o CSS pode estilizar :user-invalid e a Constraint Validation API expõe o mesmo estado a scripts. É uma camada de usabilidade, não de segurança; o servidor valida de novo.
-
Kerberos no Windows: klist, klist purge e setspn -L/-Q para diagnosticar problemas de SPN
O Windows expõe os tickets Kerberos em cache por meio do klist e os service principal names (SPNs) por meio do setspn. SPNs duplicados e diferença de relógio entre cliente e controlador de domínio são as duas falhas que mais costumam aparecer como erros confusos de "não consegue autenticar", em vez de uma mensagem clara do Kerberos.
-
Narrowing no TypeScript: unions, unknown e any
O TypeScript reduz um tipo union dentro de um ramo após verificações com typeof, instanceof, in, igualdade e truthiness, ou com um type predicate definido pelo usuário; uniões discriminadas com uma verificação de never garantem exaustividade. unknown aceita qualquer valor, mas proíbe usá-lo até ser estreitado, enquanto any desliga a verificação.
-
Quais sinais de observabilidade um serviço JVM ou .NET deve emitir por padrão e com que overhead?
Pergunta em aberto: ambos os runtimes trazem telemetria embutida (Flight Recorder e logs de GC na JVM; contadores do EventPipe e dotnet-trace no .NET) e têm auto-instrumentação OpenTelemetry, mas há pouca evidência compartilhada sobre quais sinais devem ficar sempre ativos em produção, quanto custam e quais realmente encurtaram incidentes.
-
Entradas de boot UEFI e estado do Secure Boot no Linux e no Windows
efibootmgr e bcdedit /enum firmware leem e reescrevem a lista de entradas de boot UEFI, que define o que o firmware tenta iniciar e em que ordem. mokutil --sb-state e Confirm-SecureBootUEFI indicam se o Secure Boot está em vigor, o que é distinto da confiança via shim/MOK num módulo de kernel de terceiros e é pré-requisito dela.
-
Tags e releases: tags leves versus anotadas e como elas se propagam
Uma tag leve é apenas um nome para um commit; uma tag anotada é um objeto com autor, data, mensagem e assinatura opcional. Por isso o git describe ignora tags leves por padrão e os releases devem usar tags anotadas ou assinadas. As tags não são enviadas junto com os branches, a menos que se use --follow-tags ou --tags, e uma tag já publicada nunca deve ser movida.
-
Gerenciamento de extensões do PostgreSQL: instalar, versionar, atualizar e exportar
Uma extensão agrupa objetos SQL e, muitas vezes, uma biblioteca compartilhada sob um único nome, com um arquivo de controle e scripts versionados. CREATE EXTENSION a instala por banco de dados, ALTER EXTENSION UPDATE aplica os scripts de atualização do autor e o pg_dump emite apenas a linha CREATE EXTENSION. Mantenha alinhados os arquivos instalados, a versão no catálogo e a biblioteca carregada, sobretudo em atualizações de pacote e no pg_upgrade.
-
Logging em scripts de administração: logger e systemd-cat no Linux, Write-EventLog/New-WinEvent e Start-Transcript no Windows
Cada plataforma oferece um meio de enviar a saída de um script de administração para um local onde uma pessoa ou outra ferramenta a encontre depois, diferente de escrever em stdout: logger(1) ou systemd-cat no log do sistema no Linux; o Event Log do Windows via Write-EventLog (apenas no Windows PowerShell 5.1) ou New-WinEvent; e Start-Transcript para uma captura bruta da sessão. Nenhum deles deve jamais receber um segredo.
-
Cisco Secure Email Gateway e SD-WAN Manager: verificar correções e preservar evidências de comprometimento
Mantenha registros de remediação separados para o scanner de e-mail e o SD-WAN Manager. Verifique as correções efetivamente instaladas, preserve evidências antes de uma recuperação que altere o estado do sistema e siga o procedimento de investigação específico de cada produto.
-
Dívida técnica como metáfora e como decisão
A dívida técnica descreve o custo futuro de um atalho. A metáfora é útil quando a dívida é deliberada e registrada, e enganosa quando serve de desculpa para trabalho descuidado ou é usada para descrever qualquer imperfeição.
-
Amostragem de logs para eventos de alto volume: mantenha todos os erros e amostre as linhas repetitivas
A amostragem descarta de propósito uma fração de eventos de log semelhantes. As formas úteis são um a cada N, rajada seguida de taxa por período, regras por nível que não tocam em avisos e erros, e amostragem no pipeline com base no ID da requisição, para que uma requisição inteira seja mantida ou descartada em conjunto, com a taxa aplicada gravada nos eventos que sobrevivem.
-
Usuários e grupos locais do jeito certo: useradd, contas de sistema, expiração de senha e a armadilha do usermod -aG
`useradd -m -s` cria um usuário interativo com diretório home e shell; `--system` com shell nologin é o formato adequado para uma conta de serviço. `usermod -G` sem `-a` substitui os grupos suplementares do usuário em vez de acrescentar a eles, um dos erros de contas locais mais comumente relatados.
-
Configurar interfaces de rede com netplan no Ubuntu e testar alterações sem perder a conexão
O netplan converte o YAML em /etc/netplan em configuração para networkd ou NetworkManager; `netplan try` aplica uma alteração e a reverte automaticamente se ninguém a confirmar dentro de um tempo limite, o que é a forma segura de mudar a rede em um host remoto. O /etc/network/interfaces do ifupdown, no Debian, é a alternativa mais antiga e ainda suportada.
-
Nomear identificadores para que o código revele a intenção
Escolha nomes que digam o que algo é ou faz, usando o vocabulário do domínio e com um comprimento proporcional ao escopo; evite codificações, abreviações e tipos enganosos, e renomeie à medida que a compreensão melhora.
-
PUBLIC, PRIVATE e INTERFACE no CMake: corrigir o escopo de dependências sem flags globais
Escolha o escopo da dependência a partir do contrato do target consumidor e verifique-o com um consumidor externo mínimo.
-
Serviços de links curtos com identificadores sequenciais recebem mais requisições de enumeração do que serviços com identificadores aleatórios
Hipótese: num encurtador de URLs cujas chaves são um contador codificado em base62, qualquer pessoa consegue percorrer todos os links, enquanto chaves aleatórias de comprimento fixo fazem a maioria das tentativas falhar. Propõe-se que os serviços sequenciais recebam uma fatia maior de requisições a chaves existentes vindas de clientes que nunca receberam o link, e que a taxa de respostas 404 não distinga os dois tipos.
-
Por que um script sem supervisão falha em silêncio no macOS: permissões TCC para arquivos, Acessibilidade e Automação
O macOS controla, por meio do TCC, o acesso a arquivos fora do contêiner de um app, o controle de teclado e tela e o envio de Apple Events entre apps. As permissões estão atreladas à identidade de código do binário que faz a chamada, e não ao usuário Unix: por isso o root não contorna o TCC, e uma ferramenta recompilada sem assinatura ou com assinatura ad hoc precisa recomeçar o processo de concessão.
Legível por máquina: JSON