SlideShare uma empresa Scribd logo
Desenvolvendo sistemas 
seguros com PHP 
FLÁVIO M. DE SOUZA
Flávio M. Souza 
 Graduado em Análise e Desenvolvimento de Sistemas, vivencia esse submundo da 
programação desde 2008 tendo o seu primeiro contato através da linguagem JAVA. 
 Seu Know-how é em automação de processos de empresas, tendo em seu currívulos 
diversos segmentos como mercantil, imobiliária, construtora, cartório, clínica 
odontológica entre outros. 
 Atuamente é Sócio DIretor e Analista de Sistemas da empresa inGETI (Provedora de 
soluções do SEBRAE/PI), trabalhando no projeto inSySALI (Sistema de gestão do 
SEBRAE para o programa Agente Local de Inovação), Analista de Sistemas da 
empresa Aura Consultoria, trabalhando no projeto DiagonalWEB (Sistema comercial 
na plataforma WEB da construtora Diagonal) e Professor da FATENE. 
 Possui conhecimento nas tecnologias JAVA SE, PHP, JAVASCRIPT, JQUERY, HTML, CSS, 
BOOTSTRAP, MYSQL e POSTGRESQL.
Porque os sistemas são vulneráveis 
 Erros de programação 
 Erros de configuração 
 Mudanças não autorizadas 
 Uso impróprio
O PHP é inseguro 
 Não, pelo contrário, o PHP sendo utilizado de forma correta é bastante seguro, não é a toa 
que grandes frameworks utiliza-o como linguagem base. 
 O PHP por ser uma linguagem de fácil aprendizagem acaba sendo a primeira linguagem de 
programação 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 
 Ranking das linguagens 
de programação mais 
Utilizadas no mundo.
Tipos de ataques mais 
utilizados
XSS - Cross-Site Scripting 
 Permite a injeção de scripts no site atacado, 
 Em geral por meio de algum campo de input do usuário. 
 É um ataque ao usuário do site e não ao sistema servidor em si. Isso porque o script injetado 
nunca será executado no servidor, mas sim nos navegadores dos clientes que visitarem a 
página infectada. 
 Essas informações nos dão a primeira dica, JAMAIS DEVEMOS CONFIAR NAQUILO QUE O 
USUÁRIO DIGITA.
XSS - Cross-Site Scripting 
 A Solução para este tipo de ataque é escapar as entradas e saídas, dessa forma o texto 
aparecerá como ele realmente é
CSRF - Cross-Site Request Forgery 
 Comandos não autorizados são transmitidos de um usuário que confia no website. 
 Ele executa scripts que copiam informações de cookies armazenados do usuário de outros 
sites para executar ações como postagens, requisições, executar login, etc.
CSRF - Cross-Site Request Forgery 
 Como prevenção podemos: 
 Trabalhar com token nos formulários. 
 Limitar tempo de vida dos cookies e sessões. 
 Etc.
SQL Injection 
 Consiste na inserção de instruções SQL dentro de uma consulta através da manipulação das 
entradas de dados de uma aplicação.
SQL Injection 
 Vamos imaginar uma aplicação com um formulário que recebe um nome de usuário, e 
depois faz uma consulta ao banco de dados: 
 $sql = "select * from usuarios where nome = '" . $_POST['txt_nome'] . "'";
SQL Injection 
 O comando SQL é montado a partir de componentes numéricos. Exemplo: pesquisa por uma 
chave primária de um registro. Neste caso, o atacante também pode tentar manipular o 
conteúdo de forma a injetar código adicional na string SQL. 
 $sql = "select * from usuarios where codigo = " . $cod ;
SQL Injection 
 O PHP fornece uma série de funções para este tratamento, são as funções de escape de 
caracteres. A maioria dos bancos suportados pelo PHP tem esta função. 
MySQLi - mysqli::real_escape_string 
MySQL - mysql_escape_string 
Postgre - pg_escape_string 
SQLite - sqlite_escape_string
SQL Injection – Simulando um ataque 
Primeiro passo - Número de campos da tabela atual 
 1 ORDER BY 1,2,3... 
Segundo passo - Descobrir nomes das tabelas 
 null union all select 1,2,group_concat(table_name) from information_schema.tables where 
table_schema=database()-- 
Terceiro passo - Descobrir nomes dos campos 
 null union all select 1,2,group_concat(column_name) from information_schema.columns where 
table_schema=database()-- 
Quarto passo - Descobrir nomes dos usuários 
 null union all select 1,2,usu_login FROM usuarios-- 
Quarto passo - Descobrir senhas dos usuários 
 null union all select 1,2,usu_senha FROM usuarios--
File Upload 
 Permite que o usuário possa subir qualquer tipo de arquivo para o seu servidor, possibilitando 
assim a exclusão de arquivos, captura de dados entre uma série de possíveis problemas que 
você pode ter.
File Upload 
 Para prevenir, se faz necessário a validação não somente da extensão do arquivo, como 
também o seu conteúdo.
PHP Injection 
 Permite a inclusão (include) de arquivos remotos diretamente em seus sistemas, dessa forma 
ele conseguirá executar scripts dentro de seu servidor.
PHP Injection 
 Para prevenir você poderá bloquear o include através de URLs no arquivo php.ini, para isso 
basta configurar a seguinte opção allow_url_include = Off.
Boas práticas de 
programação para 
tornar o seu sistema mais 
seguro
Não passar informações pela URL 
 Um erro comum de programadores iniciantes é enviar informações através da url utilizando o 
método GET. 
 Por padrão, o formulário utiliza o método GET, é preciso configurá-lo através do atributo 
method=“POST”.
Validações do lado do servidor ou do 
lado do cliente? 
Validação do lado do cliente. 
 O usuário pode interferir nas validações. 
 Valida em tempo real. 
 Alguns navegadores não suportam 
JavaScript. 
Validação do lado do servidor. 
 O usuário não consegue interferir nas 
validações. 
 Só valida após enviar os dados do formulário. 
 Funciona em todos os navegadores já que a 
validação ocorrerá no servidor independente 
de navegador.
Spoofing de formulários 
 O Spoofing ocorre quando alguém faz uma postagem de um de seus formulários de algum 
local inesperado. 
 Técnica mais utilizada para a prevenção do ataque é o uso de um token. 
 No momento que é exibido o formulário, um token é gerado e armazenado na sessão, quando 
o formulário é enviado, é confirmada se a chave enviada é a mesma gravada na sessão.
Mudar o nome da sessão 
 Quando não informado o nome da sessão, o PHP cria automaticamente com o nome 
PHPSESSID 
 Esse nome padrão torna a sessão do usuário vulnerável. 
 O ideal é que se altere o nome para características próprias de cada usuário como por 
exemplo Código + Nome + Data d
Verificar origem dos dados 
 Caso você utilize uma versão mais antiga do PHP, de quando o register_globals ainda 
funcionava. 
 O register_globals criava variáveis automaticamente a partir dos arrays superglobais $_GET, 
$_POST, $_SESSION, $_COOKIE, $_SERVER.
Limitar o tempo da sessão 
 Embora o usuário tenha saído do site ou até mesmo fechado o navegador, dependendo da 
forma como está configurada, a sessão permanecerá ativa no servidor. 
 O ideal é que se limite o tempo da sessão. 
 O ideal também é que você trate através de eventos para que ao usuário sair do site, aquela 
sessão automaticamente seja excluída.
Validar upload de arquivos 
 Usuários maliciosos podem subir arquivos que podem ser executados no servidor e trazer algum 
dano. 
 Para evitar esse tipo de ataque, você precisa validar não somente a extensão do arquivo, mas 
também o conteúdo do mesmo.
Use require ao invés de include 
 O include, como o próprio nome diz inclui um arquivo dentro de uma página, mas isso não 
torna obrigatória a presença do mesmo, ou seja, se por algum motivo o arquivo não exista, ele 
continua com a execução do script. 
 Já o Require, torna obrigatória a inclusão do arquivo, assim, se por algum motivo o arquivo não 
existir, ele bloqueia a execução do script.
Verificar nível de acesso em 
funcionalidades 
 Não adianta em um sistema usar milhões de ifs e tratar apenas os menus. 
 O usuário conseguirá acessar qualquer página através do link direto. 
 Forma correta de se validar nível de acesso é bloquear todas as funcionalidades para todos os 
usuários e só liberá-las apenas para os usuários autorizados. 
 Forma errada de se validar nível de acesso, liberar todas as funcionalidades para todo mundo 
e bloqueá-las apenas para os usuários não autorizados.
Filtrar todas as entradas de dados 
 Nunca confie no usuário. 
 Filtre todas as entradas de dados para saber se realmente é o que o seu sistema espera. 
 O PHP disponibiliza uma função interessante para fazer essa validação ou saneamento, essa 
função é a filter_input();
Filtrar todas as saídas de dados 
 Sempre quando for exibir dados, converta os caracteres para realidade HTML.
Monitore os erros de senha 
 Em caso de mais de três tentativas de senha incorreta, bloqueie o IP de origem, adicione um 
Captcha como validação adicional, isso dificulta ataques de forca bruta.
Trabalhe formulários com Captcha 
 Adicione um Captcha como validação adicional, isso dificulta ataques de forca bruta.
Permissões em pasta 
 Restrinja o acesso às pastas do servidor, ou seja, 
permissões de execução e escrita somente em pastas 
apropriadas.
Não armazenar senha em texto puro 
na sessão 
 Senhas não devem ser armazenadas sem “cifragem”, sempre armazene senhas 
criptografadas, assim estaremos protegendo também nossos usuários, numa eventual 
invasão ao banco de dados.
Não armazenar senha em texto puro 
no banco de dados 
Hackers conseguem senhas (em texto puro!) da Microsoft Store indiana 
http://www.gemind.com.br/11654/microsoft-store-india-senhas-hackers/
PHP Injection 
 Muitas vezes quando se faz include de forma dinâmica, ou seja, com a página sendo 
passada através de variáveis, abre-se uma brecha enorme para ataques, pois o usuário mal 
intencionado pode alterar o valor dessa variável para um arquivo externo que poderá ser 
executado dentro de seu servidor. 
 Como prevenção podemos desabilitar no arquivo php.ini o include de arquivos através de 
url allow_url_include ou simplesmente validar se o arquivo existe is_file em nosso servidor.
Requisições JSON 
 Requisições que retornam JSON são ótimas de ser utilizadas em nossos sistemas, porém, é de 
extrema importância que haja uma validação de onde vem essa requisição. 
 Como se trata de uma requisição, eu não preciso está dentro do servidor para executar a 
mesma e isso juntamente com um arquivo mal configurado pode permitir que sejam 
roubadas informações de seus sistemas.
Use Framework 
 Por fim, é altamente recomendável que você utilize frameworks para desenvolvimento, pois, 
estes possuem equipes de programadores altamente experientes que já pensaram nisso tudo 
para você.
Usando o php.ini para 
tornar o PHP mais seguro
Não exiba erros 
 No ambiente de produção trabalhe com erros na forma de logs. 
 Mostrar erros na t 
 ela pode revelar informações importantes do teu sistema. 
display_errors=Off 
log_errors=On 
error_log=/var/log/httpd/php_scripts_error.log
register_globals 
 Cria variáveis automaticamente a partir dos arrays superglobais $_GET, $_POST, $_SESSION, 
$_COOKIE, $_SERVER
register_globals 
 Desabilitada por padrão a partir da versão 4.2.0 do PHP 
 Considerada obsoleta a partir da versão 5.3 
 Não está mais presente a partir da versão 5.4 
Register_globals=Off
Desabilite o upload de arquivos 
 Caso seu sistema não tenha upload de arquivos, desabilite a funcionalidade para que 
nenhum mal intencionado possa estar subindo arquivos indevidos para o seu servidor. 
file_uploads=Off
Desabilite a execução remota de 
códigos 
 Dessa forma seu sistema não permite que sejam incluídos arquivos externos. 
allow_url_fopen=Off 
allow_url_include=Off
Controle o tamanho das requisições 
POST 
 Caso seu sistema não trabalhe com muita transferência de dados, não tem necessidade de 
ter um tamanho alto para a transferência dos mesmos. 
post_max_size=1K
Controle os recursos que um script 
pode consumir 
 Dessa forma você evita o estouro de memória em seu servidor, caso um usuário descubra 
que existe algum script causando estouro de memória ele pode se aproveitar dessa falha 
para deixar seu servidor indisponível. 
max_execution_time = 30 
max_input_time = 30 
memory_limit = 40M
Desabilitando funções perigosas do 
PHP 
 Existem algumas funções que se você não 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 SISTEMA É 100% SEGURO.
Dúvidas???
Referências 
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/ 
apresentacaosegurancaphp.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/
Flávio M. de Souza 
flavio@inovup.com.br 
(85) 8667-2972 
Contato

Mais conteúdo relacionado

Mais procurados

Invasão e correção em sites
Invasão e correção em sitesInvasão e correção em sites
Invasão e correção em sites
Daskonet Dasko
 
Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!
Gustavo Neves
 
Segurança na web
Segurança na webSegurança na web
Segurança na web
Kaito Queiroz
 
Desenvolvimento de Software Seguro
Desenvolvimento de Software SeguroDesenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
Augusto Lüdtke
 
Xss
XssXss
Desenvolvimento web seguro cookies - Rodolfo Stangherlin
Desenvolvimento web seguro cookies - Rodolfo StangherlinDesenvolvimento web seguro cookies - Rodolfo Stangherlin
Desenvolvimento web seguro cookies - Rodolfo Stangherlin
Tchelinux
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos Web
Sergio Henrique
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)
Leandro Lugaresi
 
Manipulando JWT em apis Laravel
Manipulando JWT em apis LaravelManipulando JWT em apis Laravel
Manipulando JWT em apis Laravel
Eduardo Cesar
 
Segurança em PHP
Segurança em PHPSegurança em PHP
Segurança em PHP
Augusto Pascutti
 
Desenvolvimento de software seguro
Desenvolvimento de software seguroDesenvolvimento de software seguro
Desenvolvimento de software seguro
Charles Fortes
 
Aula 10 - Cross Site Scripting (XSS)
Aula 10 - Cross Site Scripting (XSS)Aula 10 - Cross Site Scripting (XSS)
Aula 10 - Cross Site Scripting (XSS)
Carlos Henrique Martins da Silva
 
PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael JaquesPHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
Rafael Jaques
 
Dwrsecomp
DwrsecompDwrsecomp
Dwrsecomp
Handerson Frota
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - Resumo
Handerson Frota
 
Conceitos de Ajax
Conceitos de AjaxConceitos de Ajax
Conceitos de Ajax
Handerson Frota
 
Resenha o que é um hacker
Resenha o que é um hackerResenha o que é um hacker
Resenha o que é um hacker
nilsonsq
 
Segurança PHP - por Samyr Abdo
Segurança PHP - por Samyr AbdoSegurança PHP - por Samyr Abdo
Segurança PHP - por Samyr Abdo
Samyr Abdo
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e Segura
Kleber Silva
 
Reverse Ajax Dwr
Reverse Ajax DwrReverse Ajax Dwr
Reverse Ajax Dwr
Handerson Frota
 

Mais procurados (20)

Invasão e correção em sites
Invasão e correção em sitesInvasão e correção em sites
Invasão e correção em sites
 
Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!
 
Segurança na web
Segurança na webSegurança na web
Segurança na web
 
Desenvolvimento de Software Seguro
Desenvolvimento de Software SeguroDesenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
 
Xss
XssXss
Xss
 
Desenvolvimento web seguro cookies - Rodolfo Stangherlin
Desenvolvimento web seguro cookies - Rodolfo StangherlinDesenvolvimento web seguro cookies - Rodolfo Stangherlin
Desenvolvimento web seguro cookies - Rodolfo Stangherlin
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos Web
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)
 
Manipulando JWT em apis Laravel
Manipulando JWT em apis LaravelManipulando JWT em apis Laravel
Manipulando JWT em apis Laravel
 
Segurança em PHP
Segurança em PHPSegurança em PHP
Segurança em PHP
 
Desenvolvimento de software seguro
Desenvolvimento de software seguroDesenvolvimento de software seguro
Desenvolvimento de software seguro
 
Aula 10 - Cross Site Scripting (XSS)
Aula 10 - Cross Site Scripting (XSS)Aula 10 - Cross Site Scripting (XSS)
Aula 10 - Cross Site Scripting (XSS)
 
PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael JaquesPHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
 
Dwrsecomp
DwrsecompDwrsecomp
Dwrsecomp
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - Resumo
 
Conceitos de Ajax
Conceitos de AjaxConceitos de Ajax
Conceitos de Ajax
 
Resenha o que é um hacker
Resenha o que é um hackerResenha o que é um hacker
Resenha o que é um hacker
 
Segurança PHP - por Samyr Abdo
Segurança PHP - por Samyr AbdoSegurança PHP - por Samyr Abdo
Segurança PHP - por Samyr Abdo
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e Segura
 
Reverse Ajax Dwr
Reverse Ajax DwrReverse Ajax Dwr
Reverse Ajax Dwr
 

Destaque

Projeto Boleto Php
Projeto Boleto PhpProjeto Boleto Php
Projeto Boleto Php
dhbarao
 
Desenvolvimento de web sites com php
Desenvolvimento de web sites com phpDesenvolvimento de web sites com php
Desenvolvimento de web sites com php
brenod123
 
Minicurso joomla 3.1
Minicurso joomla 3.1Minicurso joomla 3.1
Minicurso joomla 3.1
brenod123
 
Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7
Er Galvão Abbott
 
Segurança PHP em 2016
Segurança PHP em 2016Segurança PHP em 2016
Segurança PHP em 2016
Er Galvão Abbott
 
JORNAL ATUAL - 34º EDIÇÃO ONLINE
JORNAL ATUAL - 34º EDIÇÃO ONLINEJORNAL ATUAL - 34º EDIÇÃO ONLINE
JORNAL ATUAL - 34º EDIÇÃO ONLINE
tvnitglobal
 
PÁSCOA - UNIVERSO GASTRONÔMICO
PÁSCOA - UNIVERSO GASTRONÔMICOPÁSCOA - UNIVERSO GASTRONÔMICO
PÁSCOA - UNIVERSO GASTRONÔMICO
Sergio Molinari
 
Revista Espirito Livre 010 Janeiro10
Revista Espirito Livre 010 Janeiro10Revista Espirito Livre 010 Janeiro10
Revista Espirito Livre 010 Janeiro10
Anderson Ramos
 
Diário Oficial de Guarujá - 07-02-12
Diário Oficial de Guarujá - 07-02-12Diário Oficial de Guarujá - 07-02-12
Diário Oficial de Guarujá - 07-02-12
Prefeitura de Guarujá
 
Cartilha fenep 1
Cartilha fenep 1Cartilha fenep 1
Cartilha fenep 1
paulocapelo
 
Revista espirito livre_010_janeiro10
Revista espirito livre_010_janeiro10Revista espirito livre_010_janeiro10
Revista espirito livre_010_janeiro10
Filipe Bezerra Sousa
 
Guia do Direito Eleitoral para Campanhas na Internet 2012
Guia do Direito Eleitoral para Campanhas na Internet 2012Guia do Direito Eleitoral para Campanhas na Internet 2012
Guia do Direito Eleitoral para Campanhas na Internet 2012
Chico Macena
 
Comitê Digital - Código de Conduta Digital
Comitê Digital - Código de Conduta DigitalComitê Digital - Código de Conduta Digital
Comitê Digital - Código de Conduta Digital
aberje
 
Tema 2 | Linguagem PHP Básico (I)
Tema 2 | Linguagem PHP Básico (I)Tema 2 | Linguagem PHP Básico (I)
Tema 2 | Linguagem PHP Básico (I)
Henry Raúl González Brito
 
Operação Castelo de Areia
Operação Castelo de AreiaOperação Castelo de Areia
Operação Castelo de Areia
Luiz Carlos Azenha
 
Novo catalogo
Novo catalogoNovo catalogo
Novo catalogo
Thiago Gonçalves
 
Introdução ao ERP Microsiga Protheus da Totvs
Introdução ao ERP Microsiga Protheus da TotvsIntrodução ao ERP Microsiga Protheus da Totvs
Introdução ao ERP Microsiga Protheus da Totvs
Edilberto Souza
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Willian Magalhães
 

Destaque (20)

Projeto Boleto Php
Projeto Boleto PhpProjeto Boleto Php
Projeto Boleto Php
 
Desenvolvimento de web sites com php
Desenvolvimento de web sites com phpDesenvolvimento de web sites com php
Desenvolvimento de web sites com php
 
Minicurso joomla 3.1
Minicurso joomla 3.1Minicurso joomla 3.1
Minicurso joomla 3.1
 
Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7
 
Segurança PHP em 2016
Segurança PHP em 2016Segurança PHP em 2016
Segurança PHP em 2016
 
JORNAL ATUAL - 34º EDIÇÃO ONLINE
JORNAL ATUAL - 34º EDIÇÃO ONLINEJORNAL ATUAL - 34º EDIÇÃO ONLINE
JORNAL ATUAL - 34º EDIÇÃO ONLINE
 
PÁSCOA - UNIVERSO GASTRONÔMICO
PÁSCOA - UNIVERSO GASTRONÔMICOPÁSCOA - UNIVERSO GASTRONÔMICO
PÁSCOA - UNIVERSO GASTRONÔMICO
 
Revista Espirito Livre 010 Janeiro10
Revista Espirito Livre 010 Janeiro10Revista Espirito Livre 010 Janeiro10
Revista Espirito Livre 010 Janeiro10
 
Diário Oficial de Guarujá - 07-02-12
Diário Oficial de Guarujá - 07-02-12Diário Oficial de Guarujá - 07-02-12
Diário Oficial de Guarujá - 07-02-12
 
Cartilha fenep 1
Cartilha fenep 1Cartilha fenep 1
Cartilha fenep 1
 
Revista espirito livre_010_janeiro10
Revista espirito livre_010_janeiro10Revista espirito livre_010_janeiro10
Revista espirito livre_010_janeiro10
 
Guia do Direito Eleitoral para Campanhas na Internet 2012
Guia do Direito Eleitoral para Campanhas na Internet 2012Guia do Direito Eleitoral para Campanhas na Internet 2012
Guia do Direito Eleitoral para Campanhas na Internet 2012
 
Comitê Digital - Código de Conduta Digital
Comitê Digital - Código de Conduta DigitalComitê Digital - Código de Conduta Digital
Comitê Digital - Código de Conduta Digital
 
Tema 2 | Linguagem PHP Básico (I)
Tema 2 | Linguagem PHP Básico (I)Tema 2 | Linguagem PHP Básico (I)
Tema 2 | Linguagem PHP Básico (I)
 
Operação Castelo de Areia
Operação Castelo de AreiaOperação Castelo de Areia
Operação Castelo de Areia
 
Novo catalogo
Novo catalogoNovo catalogo
Novo catalogo
 
Catalogo taurus
Catalogo   taurusCatalogo   taurus
Catalogo taurus
 
Catalogo taurus
Catalogo   taurusCatalogo   taurus
Catalogo taurus
 
Introdução ao ERP Microsiga Protheus da Totvs
Introdução ao ERP Microsiga Protheus da TotvsIntrodução ao ERP Microsiga Protheus da Totvs
Introdução ao ERP Microsiga Protheus da Totvs
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
 

Semelhante a Desenvolvendo sistemas seguros com PHP

Construindo uma aplicação PHP à Prova de Balas - Rafael Jaques
Construindo uma aplicação PHP à Prova de Balas - Rafael JaquesConstruindo uma aplicação PHP à Prova de Balas - Rafael Jaques
Construindo uma aplicação PHP à Prova de Balas - Rafael Jaques
Tchelinux
 
Testes de segurança em aplicações web
Testes de segurança em aplicações webTestes de segurança em aplicações web
Testes de segurança em aplicações web
Synergia - Engenharia de Software e Sistemas
 
Sql injection
Sql injectionSql injection
Sql injection
Tiago Natel de Moura
 
Segurança na web
Segurança na webSegurança na web
Segurança na web
Kaito Queiroz
 
Aula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação WebAula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação Web
Matheus Fidelis
 
OWASP TOP 10 - Web Security
OWASP TOP 10 - Web SecurityOWASP TOP 10 - Web Security
OWASP TOP 10 - Web Security
Marlon Bernardes
 
ataque_bruteforce_com_hydra_parte_1.pdf
ataque_bruteforce_com_hydra_parte_1.pdfataque_bruteforce_com_hydra_parte_1.pdf
ataque_bruteforce_com_hydra_parte_1.pdf
xererenhosdominaram
 
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesPalestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Clavis Segurança da Informação
 
Top Plugins de Segurança para WordPress
Top Plugins de Segurança para WordPressTop Plugins de Segurança para WordPress
Top Plugins de Segurança para WordPress
Tales Augusto
 
Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard Barros
Richard Barros
 
A Linguagem Php
A Linguagem PhpA Linguagem Php
A Linguagem Php
Joaquim Vieira
 
Segurança & Ruby on Rails
Segurança & Ruby on RailsSegurança & Ruby on Rails
Segurança & Ruby on Rails
Julio Monteiro
 
Desenvolvimento seguro - WorkSec 2019
Desenvolvimento seguro - WorkSec 2019Desenvolvimento seguro - WorkSec 2019
Desenvolvimento seguro - WorkSec 2019
Alcyon Ferreira de Souza Junior, MSc
 
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Clavis Segurança da Informação
 
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner EliasTratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Magno Logan
 
Invasao_e_Correcao_em_Sites.pdf
Invasao_e_Correcao_em_Sites.pdfInvasao_e_Correcao_em_Sites.pdf
Invasao_e_Correcao_em_Sites.pdf
xererenhosdominaram
 
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEBFIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
Erick Belluci Tedeschi
 
Segurança e Auditoria de sistemas
Segurança e Auditoria de sistemasSegurança e Auditoria de sistemas
Segurança e Auditoria de sistemas
Wesley Gimenes
 
Palestra - PHPESTE 2015 - Hacker do bem, quebrando as principais dicas de des...
Palestra - PHPESTE 2015 - Hacker do bem, quebrando as principais dicas de des...Palestra - PHPESTE 2015 - Hacker do bem, quebrando as principais dicas de des...
Palestra - PHPESTE 2015 - Hacker do bem, quebrando as principais dicas de des...
Thiago Dieb
 
Saindo do 0x0 sobre segurança em aplicações web
Saindo do 0x0 sobre segurança em aplicações webSaindo do 0x0 sobre segurança em aplicações web
Saindo do 0x0 sobre segurança em aplicações web
Igor Carneiro
 

Semelhante a Desenvolvendo sistemas seguros com PHP (20)

Construindo uma aplicação PHP à Prova de Balas - Rafael Jaques
Construindo uma aplicação PHP à Prova de Balas - Rafael JaquesConstruindo uma aplicação PHP à Prova de Balas - Rafael Jaques
Construindo uma aplicação PHP à Prova de Balas - Rafael Jaques
 
Testes de segurança em aplicações web
Testes de segurança em aplicações webTestes de segurança em aplicações web
Testes de segurança em aplicações web
 
Sql injection
Sql injectionSql injection
Sql injection
 
Segurança na web
Segurança na webSegurança na web
Segurança na web
 
Aula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação WebAula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação Web
 
OWASP TOP 10 - Web Security
OWASP TOP 10 - Web SecurityOWASP TOP 10 - Web Security
OWASP TOP 10 - Web Security
 
ataque_bruteforce_com_hydra_parte_1.pdf
ataque_bruteforce_com_hydra_parte_1.pdfataque_bruteforce_com_hydra_parte_1.pdf
ataque_bruteforce_com_hydra_parte_1.pdf
 
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesPalestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
 
Top Plugins de Segurança para WordPress
Top Plugins de Segurança para WordPressTop Plugins de Segurança para WordPress
Top Plugins de Segurança para WordPress
 
Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard Barros
 
A Linguagem Php
A Linguagem PhpA Linguagem Php
A Linguagem Php
 
Segurança & Ruby on Rails
Segurança & Ruby on RailsSegurança & Ruby on Rails
Segurança & Ruby on Rails
 
Desenvolvimento seguro - WorkSec 2019
Desenvolvimento seguro - WorkSec 2019Desenvolvimento seguro - WorkSec 2019
Desenvolvimento seguro - WorkSec 2019
 
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
 
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner EliasTratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
 
Invasao_e_Correcao_em_Sites.pdf
Invasao_e_Correcao_em_Sites.pdfInvasao_e_Correcao_em_Sites.pdf
Invasao_e_Correcao_em_Sites.pdf
 
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEBFIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
 
Segurança e Auditoria de sistemas
Segurança e Auditoria de sistemasSegurança e Auditoria de sistemas
Segurança e Auditoria de sistemas
 
Palestra - PHPESTE 2015 - Hacker do bem, quebrando as principais dicas de des...
Palestra - PHPESTE 2015 - Hacker do bem, quebrando as principais dicas de des...Palestra - PHPESTE 2015 - Hacker do bem, quebrando as principais dicas de des...
Palestra - PHPESTE 2015 - Hacker do bem, quebrando as principais dicas de des...
 
Saindo do 0x0 sobre segurança em aplicações web
Saindo do 0x0 sobre segurança em aplicações webSaindo do 0x0 sobre segurança em aplicações web
Saindo do 0x0 sobre segurança em aplicações web
 

Último

História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 

Último (6)

História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 

Desenvolvendo sistemas seguros com PHP

  • 1. Desenvolvendo sistemas seguros com PHP FLÁVIO M. DE SOUZA
  • 2. Flávio M. Souza  Graduado em Análise e Desenvolvimento de Sistemas, vivencia esse submundo da programação desde 2008 tendo o seu primeiro contato através da linguagem JAVA.  Seu Know-how é em automação de processos de empresas, tendo em seu currívulos diversos segmentos como mercantil, imobiliária, construtora, cartório, clínica odontológica entre outros.  Atuamente é Sócio DIretor e Analista de Sistemas da empresa inGETI (Provedora de soluções do SEBRAE/PI), trabalhando no projeto inSySALI (Sistema de gestão do SEBRAE para o programa Agente Local de Inovação), Analista de Sistemas da empresa Aura Consultoria, trabalhando no projeto DiagonalWEB (Sistema comercial na plataforma WEB da construtora Diagonal) e Professor da FATENE.  Possui conhecimento nas tecnologias JAVA SE, PHP, JAVASCRIPT, JQUERY, HTML, CSS, BOOTSTRAP, MYSQL e POSTGRESQL.
  • 3. Porque os sistemas são vulneráveis  Erros de programação  Erros de configuração  Mudanças não autorizadas  Uso impróprio
  • 4. O PHP é inseguro  Não, pelo contrário, o PHP sendo utilizado de forma correta é bastante seguro, não é a toa que grandes frameworks utiliza-o como linguagem base.  O PHP por ser uma linguagem de fácil aprendizagem acaba sendo a primeira linguagem de programação 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.
  • 5. O PHP é inseguro  Ranking das linguagens de programação mais Utilizadas no mundo.
  • 6. Tipos de ataques mais utilizados
  • 7. XSS - Cross-Site Scripting  Permite a injeção de scripts no site atacado,  Em geral por meio de algum campo de input do usuário.  É um ataque ao usuário do site e não ao sistema servidor em si. Isso porque o script injetado nunca será executado no servidor, mas sim nos navegadores dos clientes que visitarem a página infectada.  Essas informações nos dão a primeira dica, JAMAIS DEVEMOS CONFIAR NAQUILO QUE O USUÁRIO DIGITA.
  • 8. XSS - Cross-Site Scripting  A Solução para este tipo de ataque é escapar as entradas e saídas, dessa forma o texto aparecerá como ele realmente é
  • 9. CSRF - Cross-Site Request Forgery  Comandos não autorizados são transmitidos de um usuário que confia no website.  Ele executa scripts que copiam informações de cookies armazenados do usuário de outros sites para executar ações como postagens, requisições, executar login, etc.
  • 10. CSRF - Cross-Site Request Forgery  Como prevenção podemos:  Trabalhar com token nos formulários.  Limitar tempo de vida dos cookies e sessões.  Etc.
  • 11. SQL Injection  Consiste na inserção de instruções SQL dentro de uma consulta através da manipulação das entradas de dados de uma aplicação.
  • 12. SQL Injection  Vamos imaginar uma aplicação com um formulário que recebe um nome de usuário, e depois faz uma consulta ao banco de dados:  $sql = "select * from usuarios where nome = '" . $_POST['txt_nome'] . "'";
  • 13. SQL Injection  O comando SQL é montado a partir de componentes numéricos. Exemplo: pesquisa por uma chave primária de um registro. Neste caso, o atacante também pode tentar manipular o conteúdo de forma a injetar código adicional na string SQL.  $sql = "select * from usuarios where codigo = " . $cod ;
  • 14. SQL Injection  O PHP fornece uma série de funções para este tratamento, são as funções de escape de caracteres. A maioria dos bancos suportados pelo PHP tem esta função. MySQLi - mysqli::real_escape_string MySQL - mysql_escape_string Postgre - pg_escape_string SQLite - sqlite_escape_string
  • 15. SQL Injection – Simulando um ataque Primeiro passo - Número de campos da tabela atual  1 ORDER BY 1,2,3... Segundo passo - Descobrir nomes das tabelas  null union all select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()-- Terceiro passo - Descobrir nomes dos campos  null union all select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database()-- Quarto passo - Descobrir nomes dos usuários  null union all select 1,2,usu_login FROM usuarios-- Quarto passo - Descobrir senhas dos usuários  null union all select 1,2,usu_senha FROM usuarios--
  • 16. File Upload  Permite que o usuário possa subir qualquer tipo de arquivo para o seu servidor, possibilitando assim a exclusão de arquivos, captura de dados entre uma série de possíveis problemas que você pode ter.
  • 17. File Upload  Para prevenir, se faz necessário a validação não somente da extensão do arquivo, como também o seu conteúdo.
  • 18. PHP Injection  Permite a inclusão (include) de arquivos remotos diretamente em seus sistemas, dessa forma ele conseguirá executar scripts dentro de seu servidor.
  • 19. PHP Injection  Para prevenir você poderá bloquear o include através de URLs no arquivo php.ini, para isso basta configurar a seguinte opção allow_url_include = Off.
  • 20. Boas práticas de programação para tornar o seu sistema mais seguro
  • 21. Não passar informações pela URL  Um erro comum de programadores iniciantes é enviar informações através da url utilizando o método GET.  Por padrão, o formulário utiliza o método GET, é preciso configurá-lo através do atributo method=“POST”.
  • 22. Validações do lado do servidor ou do lado do cliente? Validação do lado do cliente.  O usuário pode interferir nas validações.  Valida em tempo real.  Alguns navegadores não suportam JavaScript. Validação do lado do servidor.  O usuário não consegue interferir nas validações.  Só valida após enviar os dados do formulário.  Funciona em todos os navegadores já que a validação ocorrerá no servidor independente de navegador.
  • 23. Spoofing de formulários  O Spoofing ocorre quando alguém faz uma postagem de um de seus formulários de algum local inesperado.  Técnica mais utilizada para a prevenção do ataque é o uso de um token.  No momento que é exibido o formulário, um token é gerado e armazenado na sessão, quando o formulário é enviado, é confirmada se a chave enviada é a mesma gravada na sessão.
  • 24. Mudar o nome da sessão  Quando não informado o nome da sessão, o PHP cria automaticamente com o nome PHPSESSID  Esse nome padrão torna a sessão do usuário vulnerável.  O ideal é que se altere o nome para características próprias de cada usuário como por exemplo Código + Nome + Data d
  • 25. Verificar origem dos dados  Caso você utilize uma versão mais antiga do PHP, de quando o register_globals ainda funcionava.  O register_globals criava variáveis automaticamente a partir dos arrays superglobais $_GET, $_POST, $_SESSION, $_COOKIE, $_SERVER.
  • 26. Limitar o tempo da sessão  Embora o usuário tenha saído do site ou até mesmo fechado o navegador, dependendo da forma como está configurada, a sessão permanecerá ativa no servidor.  O ideal é que se limite o tempo da sessão.  O ideal também é que você trate através de eventos para que ao usuário sair do site, aquela sessão automaticamente seja excluída.
  • 27. Validar upload de arquivos  Usuários maliciosos podem subir arquivos que podem ser executados no servidor e trazer algum dano.  Para evitar esse tipo de ataque, você precisa validar não somente a extensão do arquivo, mas também o conteúdo do mesmo.
  • 28. Use require ao invés de include  O include, como o próprio nome diz inclui um arquivo dentro de uma página, mas isso não torna obrigatória a presença do mesmo, ou seja, se por algum motivo o arquivo não exista, ele continua com a execução do script.  Já o Require, torna obrigatória a inclusão do arquivo, assim, se por algum motivo o arquivo não existir, ele bloqueia a execução do script.
  • 29. Verificar nível de acesso em funcionalidades  Não adianta em um sistema usar milhões de ifs e tratar apenas os menus.  O usuário conseguirá acessar qualquer página através do link direto.  Forma correta de se validar nível de acesso é bloquear todas as funcionalidades para todos os usuários e só liberá-las apenas para os usuários autorizados.  Forma errada de se validar nível de acesso, liberar todas as funcionalidades para todo mundo e bloqueá-las apenas para os usuários não autorizados.
  • 30. Filtrar todas as entradas de dados  Nunca confie no usuário.  Filtre todas as entradas de dados para saber se realmente é o que o seu sistema espera.  O PHP disponibiliza uma função interessante para fazer essa validação ou saneamento, essa função é a filter_input();
  • 31. Filtrar todas as saídas de dados  Sempre quando for exibir dados, converta os caracteres para realidade HTML.
  • 32. Monitore os erros de senha  Em caso de mais de três tentativas de senha incorreta, bloqueie o IP de origem, adicione um Captcha como validação adicional, isso dificulta ataques de forca bruta.
  • 33. Trabalhe formulários com Captcha  Adicione um Captcha como validação adicional, isso dificulta ataques de forca bruta.
  • 34. Permissões em pasta  Restrinja o acesso às pastas do servidor, ou seja, permissões de execução e escrita somente em pastas apropriadas.
  • 35. Não armazenar senha em texto puro na sessão  Senhas não devem ser armazenadas sem “cifragem”, sempre armazene senhas criptografadas, assim estaremos protegendo também nossos usuários, numa eventual invasão ao banco de dados.
  • 36. Não armazenar senha em texto puro no banco de dados Hackers conseguem senhas (em texto puro!) da Microsoft Store indiana http://www.gemind.com.br/11654/microsoft-store-india-senhas-hackers/
  • 37. PHP Injection  Muitas vezes quando se faz include de forma dinâmica, ou seja, com a página sendo passada através de variáveis, abre-se uma brecha enorme para ataques, pois o usuário mal intencionado pode alterar o valor dessa variável para um arquivo externo que poderá ser executado dentro de seu servidor.  Como prevenção podemos desabilitar no arquivo php.ini o include de arquivos através de url allow_url_include ou simplesmente validar se o arquivo existe is_file em nosso servidor.
  • 38. Requisições JSON  Requisições que retornam JSON são ótimas de ser utilizadas em nossos sistemas, porém, é de extrema importância que haja uma validação de onde vem essa requisição.  Como se trata de uma requisição, eu não preciso está dentro do servidor para executar a mesma e isso juntamente com um arquivo mal configurado pode permitir que sejam roubadas informações de seus sistemas.
  • 39. Use Framework  Por fim, é altamente recomendável que você utilize frameworks para desenvolvimento, pois, estes possuem equipes de programadores altamente experientes que já pensaram nisso tudo para você.
  • 40. Usando o php.ini para tornar o PHP mais seguro
  • 41. Não exiba erros  No ambiente de produção trabalhe com erros na forma de logs.  Mostrar erros na t  ela pode revelar informações importantes do teu sistema. display_errors=Off log_errors=On error_log=/var/log/httpd/php_scripts_error.log
  • 42. register_globals  Cria variáveis automaticamente a partir dos arrays superglobais $_GET, $_POST, $_SESSION, $_COOKIE, $_SERVER
  • 43. register_globals  Desabilitada por padrão a partir da versão 4.2.0 do PHP  Considerada obsoleta a partir da versão 5.3  Não está mais presente a partir da versão 5.4 Register_globals=Off
  • 44. Desabilite o upload de arquivos  Caso seu sistema não tenha upload de arquivos, desabilite a funcionalidade para que nenhum mal intencionado possa estar subindo arquivos indevidos para o seu servidor. file_uploads=Off
  • 45. Desabilite a execução remota de códigos  Dessa forma seu sistema não permite que sejam incluídos arquivos externos. allow_url_fopen=Off allow_url_include=Off
  • 46. Controle o tamanho das requisições POST  Caso seu sistema não trabalhe com muita transferência de dados, não tem necessidade de ter um tamanho alto para a transferência dos mesmos. post_max_size=1K
  • 47. Controle os recursos que um script pode consumir  Dessa forma você evita o estouro de memória em seu servidor, caso um usuário descubra que existe algum script causando estouro de memória ele pode se aproveitar dessa falha para deixar seu servidor indisponível. max_execution_time = 30 max_input_time = 30 memory_limit = 40M
  • 48. Desabilitando funções perigosas do PHP  Existem algumas funções que se você não 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
  • 49. Para finalizar NENHUM SISTEMA É 100% SEGURO.
  • 51. Referências 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/ apresentacaosegurancaphp.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/
  • 52. Flávio M. de Souza flavio@inovup.com.br (85) 8667-2972 Contato