Carlos Cardoso 8 anos e meio atrás
Uma das tiras clássicas do xkcd é a do pequeno Bobby Tables, o garoto com uma string de SQL injection no nome. Foi uma cruel atitude dos pais para punir programadores preguiçosos que não fazem crítica de dados. Infelizmente isso é uma regra, não uma exceção.
No meu tempo de analista eu adorava chicotear programador que não fazia crítica de dados. Nem as substituições básicas de strings eliminando aspas e plics e parênteses eles colocavam. Muitos achavam que o simples fato do formulário HTML ter um campo numérico era suficiente para “proteger” o sistema. Aí eu criava uma página externa fazendo post de uma string e derrubava o sistemão do idiota.
Essa crítica de dados pode ser tão simples e inexistente quanto verificar por strings como “AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA” que quebram a maioria dos sistemas de comentários.
Agora descobriram um caso digno de figurar na família do Bobby Tables: uma mulher que não ouviu o conselho do marido, passou a usar o sobrenome dele e descobriu que o mundo dos computadores é programado com bem menos inteligência do que esperado.
O nome da mulher? Jennifer Null.
Ela descobriu que não consegue comprar passagens aéreas e um monte de sites não funcionam direito.
A explicação? Aquela desgraça, aquele TXT metido a besta que chamam de XML. Mais precisamente este bug aqui. Basicamente quando você parseia a string em XML ela deixa de ser “null” e vira <campo>null</campo>
.
Neste momento ela passa a ser interpretada como a constante NULL, que representa nada, e portanto o campo é tratado como vazio.
A solução é tratar NULL e um monte de outras palavras reservadas antes de jogar os dados pra XML. As chances disso acontecer? Zero, é muito mais fácil sugerirem que a pobre moça adicione um espaço no nome, ou algo assim. Como qualquer programador decente aplica um TRIM nas strings que recebe? Lamento informar mas o campo de busca do Skype pra Linux não faz isso.
A parte ruim: Jennifer Null vai ter que explicar pro funcionário no checkin que a identidade dela diz Null mas o cartão de embarque diz Nulla ou Null1. Quer saber? Fica em casa, Jen, dá menos trabalho.
Fonte: BBC.