Upload
ait-proeg-ufpa
View
357
Download
0
Embed Size (px)
DESCRIPTION
Apresentação sobre Segurança em PHP
Citation preview
Laerte Guedes
As linguagens de programação por si só já possuem algumas brechas de segurança que podem vir a ser exploradas por hackers mal intencionados. Porém, estima-se que cerca de 70% das falhas exploradas não são da linguagem, e sim, da codificação indevida do sistema.
Mensagens de Erro: É necessário muito cuidado com a exposição de informações que mensagens de erro provocam. Uma simples falha de conexão com banco de dados pode exibir o nome do banco e o usuário do mesmo, o que é perigoso se alguém mal intencionado ver.
Criptografia
Criptografia: Como sabemos, informações trafegam e existe a possibilidade de interceptação dessas informações por um cracker. Toda informação sigilosa deve ser protegida por um algoritmo de criptografia. É aconselhável usar um bom algoritmo de criptografia, ou usar um próprio.
Validação de Dados: Tendo seu aplicativo na web você nunca terá 100% de controle sobre tudo que seus visitantes vão preencher em seus formulários, que diga-se de passagem, é a ferramenta mais importante de qualquer aplicação. Logo, filtre todas as informações afim de evitar ataques, tais como: XSS, SQL Injection, Mail Injection, HTML Injection e outros.
Configurações de Servidor: Fique atento sempre as configurações dos servidores que pretende trabalhar. Existem diretivas que podem ser exploradas facilmente se não houver a devida preocupação por parte do programador na hora da codificação.
Atualize-se: Procure sempre procurar sobre novos tipos de invasão e softwares mal-intencionados e modo de como proteger o seu sistema web deles. Não esqueça, todo dia surgem novos vírus e outras ameaças.
SQL Injection: É um tipo de ameaça de segurança que visa a inserção de instruções SQL através da manipulação de dados de uma aplicação.
Consideremos o seguinte comando SQL: SELECT id, nome, sobrenome FROM autores; Restringiremos nossa busca amarrando os
valores inseridos pelo usuário numa cláusula WHERE:
SELECT id, nome, sobrenome FROM autores WHERE nome = 'josé' AND sobrenome = 'silva';
José e Silva são strings cujo conteúdo será inserido como entrada pelo usuário.
Considerando isso, vamos supor que o usuário coloque acidentalmente uma aspa simples no meio da string inserida:
SELECT id, nome, sobrenome FROM autores WHERE nome = 'jo'sé' AND sobrenome = 'silva';
O inserção da aspa faz com que o que vier depois dela seja considerado como uma instrução SQL autêntica. Acima temos erro de sintaxe, mas poderíamos fazer assim:
SELECT id, nome, sobrenome FROM autores WHERE nome = 'jo'; DROP TABLE autores ;
Desse modo, nesse último comando, ao inserirmos uma string acrescida de aspas simples e do comando “DROPTABLE autores” no injetamos uma instrução SQL de forma indevida, e removemos a tabela autores de nosso banco de dados.
Resumindo, a SQL Injection só significa uma coisa para nosso sistema:
Usar a Função Addslashes(); Fazer validações na entrada; Usar prepared statements;
Obrigado!