Não brinque com NULL

Uma história digna de sexta-feira aconteceu com o pesquisador americano em segurança Joseph Tartaro. Ele queria se destacar, pedindo não apenas um número especial para seu carro, mas também associando-o à sua profissão. A primeira ideia era brincar com SEGFAULT ou algo do tipo. Mas, no final, ele decidiu por NULL para seu carro e VOID para sua esposa. Notou algo estranho? Sobre como essa inocente travessura se transformou em um problema, o outro curioso Sr. Null e as lições sobre bugs na verificação de tipos de dados na entrada do usuário, leia abaixo.

Não brinque com NULL

Assim, em 2016, nosso brincalhão da programação recebeu suas novas placas divertidas e deve ter esfregado as mãos com satisfação. Ele até tinha esperança de que essa manobra o livraria de multas. Não que ele infringisse as regras com frequência, mas a própria ideia de quebrar o sistema desse jeito parecia muito interessante para um especialista em segurança.

Os problemas começaram um ano depois, quando ele tentou renovar o registro das placas online. E deixou o site encarregado disso bastante confuso.

Não brinque com NULL

O sistema considerou o número que ele inseriu como inválido. Os programadores erraram em algum lugar, e o NULL inserido como valor de texto, aparentemente, foi verificado incorretamente. Um erro de tipagem relaxada? No entanto, ele conseguiu renovar a placa por um ano através do código no link, e de alguma forma, ele acabou deixando isso de lado.

No entanto, como se revelou, esses problemas estavam longe de ser os únicos. Em seguida, a história lembrou uma velha piada:

Um soldado no meio do campo tenta consertar uma esteira que se desvinculou de seu tanque. De repente, uma fada aparece do nada e pergunta:
— O que você está fazendo, soldado?
— Ah, estou consertando.
— E você gostaria de fazer isso de verdade?
— (sonhando) Eu gostaria...
A fada agitou sua varinha... E a torre do tanque caiu.

Em 2018, ele recebeu uma multa totalmente merecida de $35. Ele poderia ter contestado, mas era mais fácil pagar, a quantia não era alta. E então a fada balançou a varinha... E sua caixa de correio se encheu de multas por estacionamentos não pagos, paradas em locais proibidos e outras alegrias semelhantes. Dúzias e dúzias de multas nos valores de $37, $60, $74, $80... De cantos completamente diferentes da Califórnia. Por modelos de carros completamente diferentes. De uma verificação de tipagem mal feita, o valor NULL se vinculou em seu banco de dados com seus dados pessoais. E toda vez que um valente guardião da lei se esquecia de inserir o número do carro no sistema ao emitir a multa, o prêmio ia para nosso herói (aqui deveria haver uma reclamação aos desenvolvedores do frontend pela falta de verificação da inclusão de um dos parâmetros chave).

Em algum momento, ele recebeu duas multas emitidas no mesmo local com algumas horas de diferença, para modelos de carros completamente diferentes. Para completar a situação, multas antigas, sem número especificado, foram aplicadas retroativamente a ele. Assim, ele acabou recebendo até multas de 2014, quando ele nem possuía esse número. No total, ele ficou com multas que somavam mais de $12.000.

Não brinque com NULL

As multas de estacionamento eram geridas por uma empresa privada, Citation Processing Center. Naturalmente, Joseph entrou em contato com eles e tentou explicar a situação. Como era de se esperar, o gerente ao telefone suavemente ignorou, pediu que ele enviasse os recibos de volta para que eles pudessem analisar. Mas isso significaria a perda da única cópia física que confirmava a irregularidade da emissão da multa. E foi bom que ele não enviou. Mais tarde, ele notou que no banco de dados aberto de multas, acessível online, o modelo original do carro tinha sido trocado pelo seu. Mais uma rodada de conversas com gerentes, igualmente inútil.

No final, ele teve que recorrer diretamente ao DMV (Departamento de Veículos Motorizados, órgão governamental responsável pelo registro de veículos), e com a ajuda deles conseguiu reduzir rapidamente o valor para $6262, mas isso não resolveu o problema inicial. Novas multas continuavam a chegar. Na data da publicação do artigo original na Wired, havia 2 multas pendentes totalizando $140. O mais triste é que o DMV se recusa a renovar suas placas para mais um ano enquanto as multas não forem pagas. Além disso, não está muito claro para onde ir e a quem dar uma bronca para que esse problema seja resolvido. O DMV observa que seu sistema reconhece corretamente suas placas e percebe a absurdidade da situação. No entanto, as questões de estacionamento são geridas pelas autoridades locais, sobre as quais eles não têm controle. Portanto, a história ainda pode ter um desdobramento. A travessura não teve sucesso.

Mr. Null

Ainda mais azarado foi Christopher Null. Nascido com esse sobrenome, ele parece condenado. Enquanto Joseph Tartaro lida apenas com multas e há cerca de um ano, Christopher se afunda continuamente mais nas profundezas do sofrimento à medida que as tecnologias digitais se desenvolvem.

Particularmente, ele enfrenta dificuldades com o conceito amplamente difundido de MVP (produto mínimo viável), que em alguns casos coincide diretamente com a ideia de "fazer as coisas de qualquer jeito e colocar em produção".

Se deixarmos de lado todas as piadas de nível escolar sobre seu sobrenome e as acusações de que ele tenta chamar atenção através disso (uma boa estratégia se você é um jornalista técnico, como Christopher), surgem estranhezas ao trabalhar com alguns sites e aplicativos.

Segundo Christopher, a maioria dos sites processa o sobrenome Null corretamente. No entanto, alguns informam que o campo não pode estar vazio ou que se trata de uma palavra reservada. Em casos raros, os aplicativos simplesmente travam. Curiosamente, segundo suas observações, quanto maior a empresa por trás do aplicativo ou site, mais problemas surgem com seu sobrenome.

É especialmente gratificante a filtragem de dados, que descarta Null de dados já salvos. Assim, às vezes ele recebe e-mails endereçados à Media LLC (enquanto o nome da empresa é Null Media LLC), e às vezes, em diversos spams, o chamam apenas de "Sr.". Ele até teve que desenvolver manobras alternativas. Por exemplo, inserir um segundo nome ou inicial no mesmo campo que o sobrenome, ou simplesmente adicionar um ponto no final. Mas às vezes, a teimosia do sistema se mostra invencível.

Assim, o Bank of America se recusava a aceitar seu e-mail null@nullmedia.com. O sistema deles simplesmente não aceitava null na parte do usuário do endereço, sendo necessário criar um apelido info@ especialmente para o banco. Mas o software bancário se desenvolvia ativamente, e após alguns anos... parou de aceitar null até como parte do nome de domínio. O coitado teve que criar uma conta banal no Gmail para os casos mais extremos. Também contendo null, mas não no início do nome do usuário.

Você já se deparou com alguma peculiaridade ao lidar com valores do sistema? Conte nos comentários.

Obrigado por estar conosco. Você gosta dos nossos artigos? Quer ver mais materiais interessantes? Apoie-nos fazendo um pedido ou recomendando a amigos, 30% de desconto para usuários do Habra em um análogo único de servidores de entrada, que foi desenvolvido para você: Toda a verdade sobre VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps a partir de $20 ou como dividir o servidor corretamente? (disponíveis opções com RAID1 e RAID10, até 24 núcleos e até 40GB DDR4).

Dell R730xd pela metade do preço? Somente conosco 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100TB a partir de $199 na Holanda! Dell R420 — 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB — a partir de $99! Leia sobre Como construir uma infraestrutura de classe corporativa utilizando servidores Dell R730xd E5-2650 v4 com custo de 9000 euros por centavos?

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster