2009
11.12

A conversão de tipo de dados ou como muitos conhecem como “casting” ,  é uma técnica muito eficaz no PHP contra ataques de sql-injection, pois com isso podemos facilmente transformar uma variável do tipo A para o tipo B, sem precisarmos nos preocupar com grandes dificuldade para realizar essa operação.  A fim de proporcionar segurança extra ou apenas para certificar-se de um tipo de conjunto de dados está sendo usado, essa técnica é frequentemente utilizada por programadores PHP(pelo menos os que eu conheço).

1
<?php
2
    //string em sua forma normal
3
    $string = "http://salsotto.com";
4
    //conversao para um numero inteiro
5
    $string = (integer)$string;
6
?>

 

No exemplo acima vimos um exemplo sem nenhum propósito, mas imagenemos o seguinte, e se essa string obrigatoriamente tivesse que ser um número, como por exemplo o id de um usuario em uma requisição utilizando o método $_GET, deixariamos passar um outro valor que não fosse um número? Pense na master brecha que o seu sistema está dispondo para pessoas mal intencionadas, pois com isso facilmente seu sistema sofrerá um ataque de sql−injection. Para tanto, veremos um outro exemplo:

1
 <?php
2
    //imaginemos que o valor venha de um $_GET e o valor é 'OR 1=1'
3
    $user = 'OR 1=1' ;
4
    //realizamos a conversao obrigatoria para um numero inteiro
5
    $user = (integer)$user;
6
?> 

 

Com isso, se alguma pessoa mal intencionada colocar uma string como parâmetro, ela automaticamente será convertida para um número inteiro, onde com isso já previnimos que o nosso sistema não aceite outro valor como parâmetro ao não ser um número inteiro, pois todo número inteiro de uma string é ZERO e assim basta realizarmos uma verificação após o casting.

É importante frisar, que só isso não resolve para a segurança do seu sistema, pois aqui só mostrei como forçar a conversão de tipos de variáveis juntamente imendando com uma dica de segurança.

Também não deixe de ler:

1 comentário

Deixe seu comentário
  1. Uma coisa bem interessante quando se trabalha com parametros de querystring no formato númerico é o uso de expressões regulares para tratamento de dados:

    Ex: $id = preg_replace(’/[^\d]/’, null, $id);

    Abraços