Proteção contra PHP Injection

Páginas em PHP podem ser vulneráveis ao ataque chamado PHP Injection. Este ataque consistem em passar por querystring comandos em PHP ou endereços de arquivos que serão interpretados e executados por sua página. Se o site não possuir a devida proteção, o invasor poderá ter total acesso e controle sobre seu site.


Abaixo segue um exemplo de proteção contra PHP Injection, onde verificamos a existência de palavras comuns neste tipo de ataque.

 

<?php
//Pega os dados passados pela URL
$pagina=$_GET['pagina'];

    //Verifica se a string passada possui algum trecho inválido
    //Caso tenha mostra uma mensagem de erro
    if(eregi("http|www|ftp|.dat|.txt|.gif|wget", $pagina))
    {
        echo "Erro na URL!";
    //Se a variável passada estiver dentro das normas, executa o else abaixo
    }else{
        if(!empty($pagina)) {
            @include ($pagina);
        }else{
            @include ("index.php"); //essa seria a sua página principal
        }
    }
?>

 

Este exemplo não permite que alguém tente colocar URLs e outros tipos de códigos em sua querystring. Veja o exemplo abaixo:

Assim funciona corretamente:
index.php?pagina=contato

Desta maneira o script acima fará o bloqueio:
index.php?pagina=http://www.sitedovirus.com&cmd=comando malicioso

Outra maneira eficiente de evitar este tipo de ataque é mapear todas as páginas de seu site através de IDs. Veja o exemplo abaixo:

$inc = "index.php"; // Página default
if($_GET['opcao']=="1") { $inc = "pagina1.php"; }
if($_GET['opcao']=="2") { $inc = "pagina2.php"; }
include($inc);

Neste exemplo somente deverão ser passados por querystring somente a ID da página desejada. Caso seja passado algo não existente nos ifs, a variável $inc continuará com o valor index.php.

  • proteção, php, injection
  • 0 Usuários acharam útil
Esta resposta lhe foi útil?

Artigos Relacionados

O que é o CSR (Certificate Signing Request)?

O que é o CSR? O CSR ou Certificate Signing Request é um...

Instalação do pacote de CA - CA Bundle Installation

Cansado de tentar encontrar a ordem certa de certificados de cadeia para o seu pacote CA?...

Como gerar o CSR - SSL/TLS no painel cPanel/WHM?

1. Entrar Faça o login no cPanel , isso geralmente pode ser acessando...

Instalar certificado SSL - painel cPanel/WHM (Paper-Lantern)

As instruções a seguir irão guiá-lo através do processo de...