Escolar Documentos
Profissional Documentos
Cultura Documentos
Flvio M. Souza
Possui conhecimento nas tecnologias JAVA SE, PHP, JAVASCRIPT, JQUERY, HTML, CSS,
BOOTSTRAP, MYSQL e POSTGRESQL.
Erros de programao
Erros de configurao
Mudanas no autorizadas
Uso imprprio
O PHP inseguro
No, pelo contrrio, o PHP sendo utilizado de forma correta bastante seguro, no a toa
que grandes frameworks utiliza-o como linguagem base.
O PHP por ser uma linguagem de fcil aprendizagem acaba sendo a primeira linguagem de
programao para muitos, o que acaba disponibilizando no mercado diversos profissionais
inexperientes e imaturos.
Essa imaturidade causa desconhecimento das mais diversas falhas que citaremos neste
material.
O PHP inseguro
de programao mais
Utilizadas no mundo.
Essas informaes nos do a primeira dica, JAMAIS DEVEMOS CONFIAR NAQUILO QUE
O USURIO DIGITA.
A Soluo para este tipo de ataque escapar as entradas e sadas, dessa forma o texto
aparecer como ele realmente
Ele executa scripts que copiam informaes de cookies armazenados do usurio de outros
sites para executar aes como postagens, requisies, executar login, etc.
Etc.
SQL Injection
SQL Injection
Vamos imaginar uma aplicao com um formulrio que recebe um nome de usurio, e
depois faz uma consulta ao banco de dados:
$sql="select*fromusuarioswherenome='".$_POST['txt_nome']."'";
SQL Injection
$sql="select*fromusuarioswherecodigo=".$cod;
SQL Injection
O PHP fornece uma srie de funes para este tratamento, so as funes deescapede
caracteres. A maioria dos bancos suportados pelo PHP tem esta funo.
MySQLi -mysqli::real_escape_string
MySQL -mysql_escape_string
Postgre -pg_escape_string
SQLite -sqlite_escape_string
1 ORDER BY 1,2,3...
File Upload
Permite que o usurio possa subir qualquer tipo de arquivo para o seu servidor,
possibilitando assim a excluso de arquivos, captura de dados entre uma srie de
possveis problemas que voc pode ter.
File Upload
PHP Injection
PHP Injection
Para prevenir voc poder bloquear o include atravs de URLs no arquivo php.ini, para isso
basta configurar a seguinte opo allow_url_include = Of.
Boas prticas de
programao para
tornar o seu sistema
mais seguro
Por padro, o formulrio utiliza o mtodo GET, preciso configur-lo atravs do atributo
method=POST.
Spoofing de formulrios
O Spoofing ocorre quando algum faz uma postagem de um de seus formulrios de algum
local inesperado.
O ideal que se altere o nome para caractersticas prprias de cada usurio como por
exemplo Cdigo + Nome + Data d
Caso voc utilize uma verso mais antiga do PHP, de quando o register_globals ainda
funcionava.
O ideal tambm que voc trate atravs de eventos para que ao usurio sair do site, aquela
sesso automaticamente seja excluda.
Usurios maliciosos podem subir arquivos que podem ser executados no servidor e trazer
algum dano.
Para evitar esse tipo de ataque, voc precisa validar no somente a extenso do arquivo,
mas tambm o contedo do mesmo.
O include, como o prprio nome diz inclui um arquivo dentro de uma pgina, mas isso no
torna obrigatria a presena do mesmo, ou seja, se por algum motivo o arquivo no exista,
ele continua com a execuo do script.
J o Require, torna obrigatria a incluso do arquivo, assim, se por algum motivo o arquivo
no existir, ele bloqueia a execuo do script.
Forma correta de se validar nvel de acesso bloquear todas as funcionalidades para todos
os usurios e s liber-las apenas para os usurios autorizados.
Forma errada de se validar nvel de acesso, liberar todas as funcionalidades para todo
mundo e bloque-las apenas para os usurios no autorizados.
Filtre todas as entradas de dados para saber se realmente o que o seu sistema espera.
O PHP disponibiliza uma funo interessante para fazer essa validao ou saneamento, essa
funo a filter_input();
Sempre quando for exibir dados, converta os caracteres para realidade HTML.
Adicione um Captcha como validao adicional, isso dificulta ataques de forca bruta.
Permisses em pasta
http://www.gemind.com.br/11654/microsoft-store-india-senhas-hackers/
PHP Injection
Muitas vezes quando se faz include de forma dinmica, ou seja, com a pgina sendo
passada atravs de variveis, abre-se uma brecha enorme para ataques, pois o usurio
mal intencionado pode alterar o valor dessa varivel para um arquivo externo que poder
ser executado dentro de seu servidor.
Requisies JSON
Requisies que retornam JSON so timas de ser utilizadas em nossos sistemas, porm,
de extrema importncia que haja uma validao de onde vem essa requisio.
Como se trata de uma requisio, eu no preciso est dentro do servidor para executar a
mesma e isso juntamente com um arquivo mal configurado pode permitir que sejam
roubadas informaes de seus sistemas.
Use Framework
Por fim, altamente recomendvel que voc utilize frameworks para desenvolvimento,
pois, estes possuem equipes de programadores altamente experientes que j pensaram
nisso tudo para voc.
No exiba erros
Mostrar erros na t
display_errors=Off
log_errors=On
error_log=/var/log/httpd/php_scripts_error.log
register_globals
register_globals
Register_globals=Off
Caso seu sistema no tenha upload de arquivos, desabilite a funcionalidade para que
nenhum mal intencionado possa estar subindo arquivos indevidos para o seu servidor.
file_uploads=Off
Dessa forma seu sistema no permite que sejam includos arquivos externos.
allow_url_fopen=Off
allow_url_include=Off
Caso seu sistema no trabalhe com muita transferncia de dados, no tem necessidade
de ter um tamanho alto para a transferncia dos mesmos.
post_max_size=1K
Dessa forma voc evita o estouro de memria em seu servidor, caso um usurio descubra
que existe algum script causando estouro de memria ele pode se aproveitar dessa falha
para deixar seu servidor indisponvel.
max_execution_time = 30
max_input_time = 30
memory_limit = 40M
Existem algumas funes que se voc no for utiliz-las em seu servidor voc deveria
desabilit-las, como o caso do exec que permite que voc execute comandos
diretamente para o sistema operacional.
disable_functions =exec,passthru,shell_exec,system,proc_open,
popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
Para finalizar
NENHUM
SEGURO.
SISTEMA 100%
Dvidas???
Referncias
http://www.cyberciti.biz/tips/php-security-best-practices-tutorial.html
http://blog.thiagobelem.net/principais-falhas-de-seguranca-no-php/
http://imasters.com.br/infra/seguranca/seguranca-em-aplicacoes-web-com-php/
http://www.softwarelivre.gov.br/palestras-tecnicas-cisl/palestras-tecnicas-cisl/apresentacaosegu
rancaphp.pdf
http://blog.thiagobelem.net/principais-falhas-de-seguranca-no-php/
http://www.linhadecodigo.com.br/artigo/673/php-programando-com-seguranca.aspx
http://www.pedropereira.net/hardening-php-seguranca-hack/
Contato
Flvio M. de Souza
flavio@inovup.com.br
(85) 8667-2972