Meio Bit » Baú » Software » Incrível: o pequeno Bobby Tables existe!

Incrível: o pequeno Bobby Tables existe!

Quem diria, uma das tirinhas clássicas do XKCD virou realidade. Não, não foi a dos Velociraptors, tem a ver com programação…

20/04/2015 às 20:16

exploits_of_a_mom

[TRIGGER WARNING] este texto só tem graça para programadores.

No tempo em que eu era analista e me divertia torturando estagiários a parte mais difícil de enfiar na cabeça deles, fora a quina de uma placa VESA era a necessidade de crítica de dados. Eu explicava que havia passado muitas noites em claro consertando bancos em dBase (pergunte a seu arqueólogo) onde todos os campos eram em formato texto “pra facilitar” e uma data podia ser “1/1/1980”, “1/jan/80” “primeiro/jan” ou “bacon”.

Com o advento da internet se tornou imperativo tratar os dados que vão para seu banco, ainda mais com linguagens de script meio nas coxas, como ASP, PHP e similares, cujas variáveis todas são de um único tipo: suruba. Isso proporciona uma técnica de invasão chamada Injeção de SQL, onde você enche de aspas e plicks, fecha a string de dados e abre uma de comandos, rodando sob quaisquer permissões aquele usuário do banco tenha. Conhecendo a preguiça, garanto que em geral é root/admin.

O brilhante XKCD brincou com isso uma vez, com a mãe que batizou o filho de Robert'); DROP TABLE Students;

Agora na vida real surgiu um caso melhor ainda, mais simples e mais elegante. Um sujeito está com um problema sério em ActionScript 3: um dos funcionários da empresa tem o sobrenome Null, e quando tentam fazer uma busca pelos registros dele no sistema da empresa, tomam na testa:

 <soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>coldfusion.xml.rpc.CFCInvocationException: 
[coldfusion.runtime.MissingArgumentException : 
 The SEARCHSTRING parameter to the getFacultyNames
function is required but was not passed in.]
</faultstring>


O pessoal fuçou e descobriu que várias funções internas do ActionScript convertem os dados pra XML e a string Null se torna o objeto null. Me lembrou uma versão antiga do JavaScript onde ainda não existia o objeto Undefined então meu script retornava o erro “Undefined is not defined”.

Há várias sugestões para resolver o problema, mas do ponto de vista de programador a mais prática é demitir o Mr Null.

Leia mais sobre: , , , .

relacionados


Comentários