Segurança De Codigo
Trabalho Escolar: Segurança De Codigo. Pesquise 862.000+ trabalhos acadêmicosPor: lopeslll • 9/5/2013 • 562 Palavras (3 Páginas) • 335 Visualizações
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áveis globais no servidor é fundamental para manter um nível de segurança adequado.
Este documento tem com ênfase a programação com o mínimo de segurança aceitável para um sistema. Quando falamos de segurança temos que ter noção que um projeto já deve nascer com esta preocupação. Que os programadores deste projeto também tenha esta preocupação na construção do código. Ou seja, segurança não é apenas uma "coisa" de rede ou de administrador de sistema, mais também uma "coisa" de programador.
Vamos ver aqui alguns exemplos simples de códigos inseguros que podem comprometer todo um sistema e regras para evita-las.
Regra 1
(Cross site script): nunca passe dados importantes via GET.
Exemplo: Uma página que usa templates onde o link para o template é passado via GET.
“http://exemplo.com.br/exemplo.php?link=faleconosco.html”.
Isto poderia gerar um grande transtorno, pois a pessoa poderia passar qualquer endereço acima, o que poderia fazer, por exemplo, que esta página funcionaria como um site impróprio.
Regra 2
(Tratamento de dados): sempre que passar um dado via GET tratar esse dado usando REGEX ou qualquer tipo de máscara, para ter certeza do tipo de dado recebido.
“http://exemplo.com.br/exemplo.php?cod=123”
$cod = int($_GET["cod"]);
//isto já transformaria qualquer dado para inteiro;
Regra 3
(Sql injection): esta regra é comumente usada por programadores desatentos. Nunca passe dados de um formulário direto para um query.
Exemplo:
Código html
<input type=text name=login>
<input type=password name=senha>
Código php
<?php
$sql = "SELECT * FROM users WHERE user=$login AND pass=$senha";
?>
As variáveis $login e $senha chegam direto no banco de dados sem nenhum tratamento ou o que pode acontecer.
Se o usuário digitar no login ou na senha OR "1=1", ou seja:
$user = a nada OR 1=1 -->passou
$senha = a nada OR 1=1 -->passou
Uma simples validação de senha e login evitaria isso, sendo este
...