SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
Cláudio
Borges

cborges@openbsd‐sp.org

O
Que
será
abordado


  O
porque
da
segurança.

  Diretivas
e
funções
perigosas.

  Configurando
o
open_basedir
e

     disable_functions.

    Utilizando
as
diretivas
php_flag
e
php_value.

    A
polêmica
do
register_globals.

    Mod_security.

    Suhoshin.

    Cuidados
com
logs
e
exibição
de
erros
em

     ambiente
de
produção.

    Programando
com
segurança.

O
Porque
da
segurança

  Falhas
podem
existir
em
qualquer
sistema.

  Programas
inseguros
podem
ser
feitos
em
   
qualquer
linguagem.

  Proteger
as
aplicações
web
é
tarefa
tanto
do
   
administrador
quando
do
programador.

  Muitas
features
ajudam
na
programação
mas
   
diminuem
a
segurança.

  Por
ser
uma
linguagem
muito
rica,muitos
   
programadores
não
consideram
que
a
   
segurança
também
depende
da
qualidade
do
   
seu
código
PHP.

Diretivas
perigosas

  allow_url_fopen
–
Permite
utilizar
arquivos

   externos
como
se
fossem
arquivos
locais.

  allow_url_include
–
Permite
utilizar
arquivos

   externos
em
include/require.

  expose_php
–
Adiciona
uma
assinatura
no

   header
do
seu
servidor
web,
informando
que

   o
php
está
instalado.

  Exemplo
de
uso
de
site
mal
desenvolvido
e
  
allow_url_fopen/allow_url_include
habilitado:

  Agora
desabilitado:

  Exemplo
de
scan
em
servidor
com
  
expose_php
habilitado:

  E
com
ele
desabilitado:

Funções
perigosas

  As
funções
exec,
shellexec,
system
e
passthru

   executam
comandos
externos.

  Outras
funções:

phpinfo,
proc_open,

   proc_nice,
chdir,
chroot,
dir,
closedir,
getcwd,

   opendir,
readdir,
rewinddir,
scandir,
popen,

   pcntl_exec,
pcntl_fork,
pcntl_alarm,

   pcntl_setpriority,
pcntl_signal,
pcntl_wait,

   pcntl_waitpid,
ini_get,
ini_get_all,
ini_set,

   ini_restore.

Configurando
o
open_basedir

    e
disable_functions

  open_basedir
–
Define
os
diretórios
a
partir

   dos
quais
o
PHP
pode
utilizar.

open_basedir = /var/www/:/tmp/




  disable_functions
–
Permite
desabilitar

   funções
que
não
precisem
ser
utilizadas.

disable_functions = phpinfo, shell_exec, exec, passthru, proc_open, proc_nice,
    system, chdir, chroot, dir, closedir, getcwd, opendir, readdir, rewinddir,
    scandir, popen, pcntl_exec, pcntl_fork, pcntl_alarm, pcntl_setpriority,
    pcntl_signal, pcntl_wait, pcntl_waitpid, ini_get, ini_get_all, ini_set,
    ini_restore
  Exemplo
de
uma
página
sem
open_basedir
 
configurado:

  Outro
exemplo:
criei
um
arquivo
chamado
readfile.php
   
com
o
seguinte
conteúdo:
<?php readfile(‘/etc/passwd’); ?>

  E
o
resultado:

  E
o
mesmo
exemplo
com
ele
configurado:

open_basedir = /var/www/:/tmp/
  E
com
o
código
do
readfile.php:

A
polêmica
do

register_globals

  Com
register_globals
habilitado,
são
criadas

   variáveis
locais
com
o
nome
equivalente
às
da

   EGPCS.

  É
possível
utilizar
register_globals
habilitado

   e
ter
minha
aplicação
segura?

  Por
que
tantos
programadores
insistem
em

   habilitar
register_globals?

  Porque
não
utilizar
register_globals?

Exemplos
de
uso
de

 register_globals

  Exemplo
de
código
com
register_globals
habilitado:

if (authenticated_user())
  $auth = true;


if ($auth)
   echo “Usuário autorizado…”;
else
  echo “Usuário sem autorização!”;


  O
código
acima
pode
ser
facilmente
burlado
com
a

  seguinte
URL:

http://www.site.com.br?login.php?auth=1
  E
agora
da
forma
correta:


if (authenticated_user())
  $_SESSION[‘auth’] = true;


if ($_SESSION[‘auth’])
   echo “Usuário autorizado…”;
else
                                 

  echo “Usuário sem autorização!”;
Utilizando
as
diretivas

  php_flag
php_value

  Com
as
diretivas
php_value,
php_flag,
é
   
possível
definir
opções
personalizadas
para
   
cada
vhost
via
arquivos
.htaccess.
É
   
necessário
que
a
diretiva
AllowOverride
   
esteja
definida
com
o
valor
All.

  As
diretivas
php_admin_flag
e
   
php_admin_value
só
podem
ser
utilizadas
   
em
arquivos
de
configuração
do
Apache
e
   
não
podem
ser
sobrescritas
por
   
diretivas
.htaccess.

  Exemplo
de
uso
da
diretiva
php_admin_value:

Mod_security

  É
um
firewall
de
aplicação
web
(WAF).

  É
um
módulo
do
Apache.

  Monitoramento,
detecção
e
prevenção
em


   tempo
real.

  Existem
arquivos
de
regras
disponíveis
para

   download.

  Você
mesmo
pode
criar
suas
regras.

  É
possível
criar
whitelists.

Suhoshin

  Um
patch
para
o
PHP
que
pode
ser
utilizado
     
como
estensão.

    Proteção
em
tempo
de
execução.

    Tem
modo
de
simulação
e
proteção.

    Aceita
filtrar
entrada
de
dados.

    Permite
encriptar
sessões.

    Proteção
de
memória.

    Aplica
limites
de
requisições
por
tipo
de
variável.

    Várias
opções
de
logs.

    Aceita
criar
whitelist/blacklist.

Cuidados
com
logs
e
exibição

  de
erros
em
ambiente
de

          produção

  Gravar
logs
de
erros
é
útil
para
debugar

   problemas.

  O
usuário
não
deve
ter
acesso
a
todas
as

   informações
de
erro.

  Exibir
erros
em
ambiente
de
produção
pode

   fornecer
informações
sobre
sistema
e

   servidor.

Opções
de
erros
e
logs
no

         php.ini

  error_reporting
–
Define
quais
níveis
de
erros

   serão
reportados.

  display_errors
–
Determina
se
os
erros
devem

   ser
exibidos
como
parte
da
saída
ou
não.

  log_errors
–
Define
se
os
erros
serão
gravados

   em
arquivo
ou
não.

  error_log
–
Define
em
qual
arquivo
os
erros

   serão
gravados.
Necessita
que
o
log_errors

   esteja
ativado.

Programando
com
segurança

  Sempre
verifique
o
tipo
de
dado,
utilize
funções
     
ctype_alpha,
ctype_alnum,
ctype_digit,
     
is_numeric,
is_digit,
e
expressões
regulares.

    Filtre
os
dados
de
entrada
com
funções
do
tipo
     
filter_var
e
filter_input.

    Utilizar
funções
de
escape
output,
como
por
     
exemplo
htmlentities,
strip_tags.

    Nunca
utilize
magic_quotes.

    Nunca
armazene
senha
em
texto
plano,
utilize
     
hashes
(md5,
sha1,
…).

    Utilize
require_once
no
lugar
de
include.

    Nunca
confie
em
usuário,
sempre
verifique
a
     
origem
dos
dados.

Referências

  Site
oficial
da
linguagem
php:

http://www.php.net


  Site
oficial
do
mod_security

http://www.modsecurity.org


  Site
oficial
do
suhoshin:

http://www.hardened‐php.net/suhosin/


  Site
oficial
do
phpsecinfo:

http://phpsec.org/projects/phpsecinfo/index.html


  Site
oficial
do
Chorizo:

https://chorizo‐scanner.com

Perguntas?

             cborges@openbsd‐sp.org


                IRC:
irc.freenode.net

Canais:
slackware‐br,
sysadms,
openbsd‐br,
opensd‐sp


Mais conteúdo relacionado

Mais procurados

ソフトウェアの構造とオープン化
ソフトウェアの構造とオープン化ソフトウェアの構造とオープン化
ソフトウェアの構造とオープン化Kiro Harada
 
Nepali bible 80)_old_testament
Nepali bible 80)_old_testamentNepali bible 80)_old_testament
Nepali bible 80)_old_testamentWorldBibles
 
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdfXMourinho
 
Inside the Erlang Vm
Inside the Erlang VmInside the Erlang Vm
Inside the Erlang VmFeng Yu
 
徐景春:企业级开源数据库灾备体系
徐景春:企业级开源数据库灾备体系徐景春:企业级开源数据库灾备体系
徐景春:企业级开源数据库灾备体系XMourinho
 
đốI TượNg Dữ LiệU Active X
đốI TượNg Dữ LiệU Active XđốI TượNg Dữ LiệU Active X
đốI TượNg Dữ LiệU Active Xnamkhoatin
 
PHP 物件導向 - 基礎觀念篇
PHP 物件導向 - 基礎觀念篇PHP 物件導向 - 基礎觀念篇
PHP 物件導向 - 基礎觀念篇Jace Ju
 
Faizan e sunnat.sindhi (فيضان سنت جلد پهريون)
Faizan e sunnat.sindhi (فيضان سنت جلد پهريون)Faizan e sunnat.sindhi (فيضان سنت جلد پهريون)
Faizan e sunnat.sindhi (فيضان سنت جلد پهريون)Ilyas Qadri Ziaee
 
עושים שלום
עושים שלוםעושים שלום
עושים שלוםgenevaaccord
 
Edm 繁體字 邁向成功
Edm 繁體字 邁向成功Edm 繁體字 邁向成功
Edm 繁體字 邁向成功杰 克
 
Edm 繁體字 邁向成功-#8d97fd 藍紫色
Edm 繁體字 邁向成功-#8d97fd  藍紫色Edm 繁體字 邁向成功-#8d97fd  藍紫色
Edm 繁體字 邁向成功-#8d97fd 藍紫色杰 克
 

Mais procurados (12)

ソフトウェアの構造とオープン化
ソフトウェアの構造とオープン化ソフトウェアの構造とオープン化
ソフトウェアの構造とオープン化
 
Nepali bible 80)_old_testament
Nepali bible 80)_old_testamentNepali bible 80)_old_testament
Nepali bible 80)_old_testament
 
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
 
Inside the Erlang Vm
Inside the Erlang VmInside the Erlang Vm
Inside the Erlang Vm
 
徐景春:企业级开源数据库灾备体系
徐景春:企业级开源数据库灾备体系徐景春:企业级开源数据库灾备体系
徐景春:企业级开源数据库灾备体系
 
đốI TượNg Dữ LiệU Active X
đốI TượNg Dữ LiệU Active XđốI TượNg Dữ LiệU Active X
đốI TượNg Dữ LiệU Active X
 
webErp安装说明
webErp安装说明webErp安装说明
webErp安装说明
 
PHP 物件導向 - 基礎觀念篇
PHP 物件導向 - 基礎觀念篇PHP 物件導向 - 基礎觀念篇
PHP 物件導向 - 基礎觀念篇
 
Faizan e sunnat.sindhi (فيضان سنت جلد پهريون)
Faizan e sunnat.sindhi (فيضان سنت جلد پهريون)Faizan e sunnat.sindhi (فيضان سنت جلد پهريون)
Faizan e sunnat.sindhi (فيضان سنت جلد پهريون)
 
עושים שלום
עושים שלוםעושים שלום
עושים שלום
 
Edm 繁體字 邁向成功
Edm 繁體字 邁向成功Edm 繁體字 邁向成功
Edm 繁體字 邁向成功
 
Edm 繁體字 邁向成功-#8d97fd 藍紫色
Edm 繁體字 邁向成功-#8d97fd  藍紫色Edm 繁體字 邁向成功-#8d97fd  藍紫色
Edm 繁體字 邁向成功-#8d97fd 藍紫色
 

Destaque

Presentation in Amsterdam Marketing and BID Network
Presentation in Amsterdam Marketing and BID NetworkPresentation in Amsterdam Marketing and BID Network
Presentation in Amsterdam Marketing and BID NetworkRicardo Neves
 
Needs Assessment6
Needs Assessment6Needs Assessment6
Needs Assessment6marytee48
 
Grace - Fraled
Grace - FraledGrace - Fraled
Grace - Fraledmehms
 
Prarthana Industries, Ahmedabad, V Groove Pulley
Prarthana Industries, Ahmedabad, V Groove PulleyPrarthana Industries, Ahmedabad, V Groove Pulley
Prarthana Industries, Ahmedabad, V Groove PulleyIndiaMART InterMESH Limited
 
Aprovechen Chicas
Aprovechen ChicasAprovechen Chicas
Aprovechen Chicasest6mx
 
ISANNE New Teacher Institute 2008
ISANNE New Teacher Institute 2008ISANNE New Teacher Institute 2008
ISANNE New Teacher Institute 2008Hans Mundahl
 
Pilar Laurido Y Camila Castro
Pilar Laurido Y Camila CastroPilar Laurido Y Camila Castro
Pilar Laurido Y Camila Castrosextojm
 
Trabajo De Sociedad
Trabajo De SociedadTrabajo De Sociedad
Trabajo De Sociedadguest4a19ec
 
P Reducibility And Npc
P Reducibility And NpcP Reducibility And Npc
P Reducibility And NpcStas Fomin
 
Social Media!
Social Media!Social Media!
Social Media!laplinp
 
Enviando E Mail Que Chega Ao Destino usando PHP
Enviando E Mail Que Chega Ao Destino usando PHPEnviando E Mail Que Chega Ao Destino usando PHP
Enviando E Mail Que Chega Ao Destino usando PHPManuel Lemos
 
Itzaquis De Trujillo Representantes De Travelone International Network Peru Sac
Itzaquis De Trujillo Representantes De Travelone International Network Peru SacItzaquis De Trujillo Representantes De Travelone International Network Peru Sac
Itzaquis De Trujillo Representantes De Travelone International Network Peru SacIVANHOE214
 
Trabajo De Sociedad
Trabajo De SociedadTrabajo De Sociedad
Trabajo De Sociedadguest4a19ec
 

Destaque (20)

Presentation in Amsterdam Marketing and BID Network
Presentation in Amsterdam Marketing and BID NetworkPresentation in Amsterdam Marketing and BID Network
Presentation in Amsterdam Marketing and BID Network
 
Needs Assessment6
Needs Assessment6Needs Assessment6
Needs Assessment6
 
B1 Sales un CRM de Clase Mundial
B1 Sales un CRM de Clase MundialB1 Sales un CRM de Clase Mundial
B1 Sales un CRM de Clase Mundial
 
Grace - Fraled
Grace - FraledGrace - Fraled
Grace - Fraled
 
Hidden Lang
Hidden LangHidden Lang
Hidden Lang
 
Prarthana Industries, Ahmedabad, V Groove Pulley
Prarthana Industries, Ahmedabad, V Groove PulleyPrarthana Industries, Ahmedabad, V Groove Pulley
Prarthana Industries, Ahmedabad, V Groove Pulley
 
Aprovechen Chicas
Aprovechen ChicasAprovechen Chicas
Aprovechen Chicas
 
Panache Jewelry, Jaipur, Amethyst Ring
Panache Jewelry, Jaipur, Amethyst RingPanache Jewelry, Jaipur, Amethyst Ring
Panache Jewelry, Jaipur, Amethyst Ring
 
ISANNE New Teacher Institute 2008
ISANNE New Teacher Institute 2008ISANNE New Teacher Institute 2008
ISANNE New Teacher Institute 2008
 
PRINCE2 introduction
PRINCE2 introductionPRINCE2 introduction
PRINCE2 introduction
 
Pilar Laurido Y Camila Castro
Pilar Laurido Y Camila CastroPilar Laurido Y Camila Castro
Pilar Laurido Y Camila Castro
 
Trabajo De Sociedad
Trabajo De SociedadTrabajo De Sociedad
Trabajo De Sociedad
 
P Reducibility And Npc
P Reducibility And NpcP Reducibility And Npc
P Reducibility And Npc
 
Social Media!
Social Media!Social Media!
Social Media!
 
Denis
DenisDenis
Denis
 
Enviando E Mail Que Chega Ao Destino usando PHP
Enviando E Mail Que Chega Ao Destino usando PHPEnviando E Mail Que Chega Ao Destino usando PHP
Enviando E Mail Que Chega Ao Destino usando PHP
 
Violencia Juvenil
Violencia JuvenilViolencia Juvenil
Violencia Juvenil
 
Prueba 1
Prueba 1Prueba 1
Prueba 1
 
Itzaquis De Trujillo Representantes De Travelone International Network Peru Sac
Itzaquis De Trujillo Representantes De Travelone International Network Peru SacItzaquis De Trujillo Representantes De Travelone International Network Peru Sac
Itzaquis De Trujillo Representantes De Travelone International Network Peru Sac
 
Trabajo De Sociedad
Trabajo De SociedadTrabajo De Sociedad
Trabajo De Sociedad
 

Protegendo sites php no seu servidor web