PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques

Preview:

DESCRIPTION

Palestra apresentada por Rafael Jaques no FISL 12 [Porto Alegre] em 01/07/2011. A apresentação visa mostrar ao desenvolvedor que o foco dos crackers não é mais a aplicação e sim os usuários da mesma. Fornece um bom panorama, fala um pouco sobre engenharia social e técnicas para evitar o caos.

Citation preview

PHP Sob Ataque:Técnicas de Programação

Defensiva

Rafael JaquesRafael JaquesFISL 12 – Porto Alegre – 01/07/11FISL 12 – Porto Alegre – 01/07/11

“Mas, a todos quantos o receberam, deu-lhes o poder de serem feitos filhos de Deus, aos que crêem no seu nome” (João 1.12)

Antes de começar, vou falar

sobre o Tchelinux...

Data dos eventos em 2011

Bagé 28/05

Bento Gonçalves 13/08

Rio Grande 27/08

Caxias do Sul 24/09

Porto Alegre A definir

Santana do Livramento A definir

Alegrete A definir

Pelotas A definir

Essa palestra é uma continuaçãoda realizada no ano passado...

http://www.slideshare.net/rafajaques

Então vamos lá!

PHP Sob Ataque: Técnicas de Programação Defensiva – Rafael Jaques – FISL 12 Porto Alegre

ObjetivoObjetivo

● Ao final dessa palestra, é possível que você saiba alguma dessas coisas:● Técnicas para evitar o caos● Técnicas para proteger o seu valoroso usuário● Uma base sobre engenharia social● Os riscos que estamos correndo na web● O porquê de o caos se instalar tão facilmente

PHP Sob Ataque: Técnicas de Programação Defensiva – Rafael Jaques – FISL 12 Porto Alegre

PautaPauta

I. Conceito

II. Comofas/

III. Engenharia social

IV. Inteligência coletiva x Aplicação

V. Protegendo o usuário

VI. Onde pedir ajuda

VII. Considerações finais

VIII. Dúvidas, críticas, sugestões...

CAPÍTULO I

Conceito

PHP Sob Ataque: Técnicas de Programação Defensiva – Rafael Jaques – FISL 12 Porto Alegre

O que é Programação Defensiva, O que é Programação Defensiva, manolo?manolo?

Conjunto de técnicas de projeto e programação objetivando a estabilidade e a segurança de um software

independentemente do imprevisível.

O objetivo é reduzir ou eliminar a influência exercida pelas Leis de Murphy sobre a sua aplicação.

Essas técnicas começaram a ser desenvolvidas quando sistemas de software passaram a possibilitar efeitos

catastróficos.

Adaptado da Wikipedia (http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_defensiva)

Como saber se estou programando defensivamente?

Se uma pessoa (que não você) consegue entender o código que foi

criado, já é um bom começo.

Se em algum momento você “supor” algo, já é um problema. Nunca

subestime o usuário.

Lembre-se que o seucódigo é inseguro.

● Por natureza, seu código será inseguro● Ao publicá-lo, lembre-se que ele será inseguro● Ao melhorá-lo, lembre-se que ele é inseguro● Depois que testá-lo e certificar-se de que ele é

seguro, ainda assim será inseguro

CAPÍTULO II

Comofas/

Código mais simplesé melhor!

Código complexo é oberço dos bugs!

Evite colocar arquivos na raiz.

Um erro de cálculo e seus dados estarão expostos!

Refatore e reutilize. Um código escrito do zero é muito arriscado!

Revise e audite seu código.Mas nomeie outra pessoa pra isso!

Trabalho em equipe ajuda a reduzir problemas no código final.

Estude sobre Canonicalization.

Omita as tags de fechamento.

Esteja preparado para o pior.

Tenha um plano de contingênciapara o caso de um apocalipse.

Backup!

robots.txt – muito cuidado ao usar!

● Evite usar para proteger informações vitais do sistema

● Prefira o Google Webmaster Tools para desindexar algo

Cuidado com o Havij !

Fatores que potencializam a criação de código inseguro

● Clientes chatos● Falta de vontade● Término do estoque de café● Aproximação do final de tarde● Véspera de feriado / fim de semana● Área comercial vendendo produtos imaginários● Falta de tempo / Prazos Jack Bauer

Fonte: Desciclopédia

CAPÍTULO III

Engenharia Social e aArte de Invadir Pessoas

Não adianta proteger pelo lado de fora se o ataque vem de dentro.

Seres humanos tendem a serbonzinhos com o semelhante.

Engenheiros sociais se aproveitamda ingenuidade das pessoas.

Treine seu usuário! Assim ele nãocompartilha informações.

CAPÍTULO IV

Inteligência Coletiva,Semi-celebridades e

Ameaças Reais

É mais ou menos o que eu faleino ano passado sobre o fatode dizer que a sua aplicação

é 100% segura...

Ataque de Negação de Serviço!

Desafio aceito: derrubar um site durante o Fórum de Segurança Web!

Cases de Ataque ao Usuário

Phishing!

Scam!

CAPÍTULO V

Protegendo o PreciosoAnel do Seu Usuário

Monitore o IP e o Refererdo seu usuário.

IP $_SERVER['REMOTE_ADDR']

Referer$_SERVER['HTTP_REFERER']

Alerte-o sobre os taisPhishing e Scam!

Utilize timeouts

HTTPS na veia!

Mantenha seu usuário seguro emostre que tudo é para o seu bem!

CAPÍTULO VI

OMG! TODOS SÃO INIMIGOS? ONDE VOU ME PROTEGER?

Nem todos são inimigos...Conheça alguns amiguinhos que vão

ajudar no caminho.

Tá... Respira um pouco...

CAPÍTULO VII

Considerações finais

PHP Sob Ataque: Técnicas de Programação Defensiva – Rafael Jaques – FISL 12 Porto Alegre

PHP Sob Ataque: Técnicas de Programação Defensiva – Rafael Jaques – FISL 12 Porto Alegre

ObrigadoObrigado

Rafael Jaques

phpit.com.br

rafa@php.net

@rafajaques

PHP Sob Ataque: Técnicas de Programação Defensiva – Rafael Jaques – FISL 12 Porto Alegre

Fontes ConsultadasFontes Consultadas

● http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_defensiva● http://www.slideshare.net/gscheibel/programao-defensiva● http://jmmwrite.wordpress.com/tag/programacao-defensiva/● http://www.ibm.com/developerworks/br/library/os-php-5goodhabits/● http://www.wellho.net/mouth/1694_Defensive-coding-techniques-in-PHP-.html● http://en.wikipedia.org/wiki/Defensive_programming● http://www.phpclasses.org/blog/post/65-8-defensive-programming-best-practices-to-prevent-breaking-your-sites.html● http://www.phpclasses.org/blog/post/66-More-defensive-programming-practices-to-survive-Web-site-traffic-peaks.html● http://www.slideshare.net/ergalvao/php-e-segurana-uma-unio-possvel● http://www.slideshare.net/ergalvao/implementando-segurana-em-sua-aplicao-php

PHP Sob Ataque: Técnicas de Programação Defensiva – Rafael Jaques – FISL 12 Porto Alegre

Imagens UtilizadasImagens Utilizadas

●http://www.franklinparishlibrary.org/MPj04276860000%5B1%5D.jpg

●http://3.bp.blogspot.com/-NaQ_9mCf3iY/TZJ0TmC7T3I/AAAAAAAAPBk/4Lw2Nm5OMwE/s1600/justice_league.jpg

●http://i.zdnet.com/blogs/SysCallApache.jpg

●http://www.cubefx.com/smart/4smarts.jpg

●http://i82.photobucket.com/albums/j279/shagg187/2783768632_beeb811d33_b.jpg

●http://www.ghsadvisors.com/defense.jpg

●http://usarmy.vo.llnwd.net/e2/-images/2008/01/17/12167/army.mil-2008-01-17-100832.jpg

●http://0.tqn.com/d/architecture/1/0/b/p/Building7.jpg

●http://lp1.pinkbike.org/p4pb6276309/p4pb6276309.jpg

●http://www.softsia.com/screenshots/Matrix-Mania_w42z.jpg

●http://www.flash-screen.com/free-wallpaper/uploads/201103/imgs/1300345654_1500x1147_atomic-bomb-blast-picture.jpg

●http://i239.photobucket.com/albums/ff58/fefferVT/P1000189.jpg

●http://vidadesuporte.com.br/wp-content/uploads/2011/06/Suporte_223.jpg

●http://api.ning.com/files/TNumCAL*-NlKkCiEYKnhdWLjtJUGLoc5s2gJ9fSLSVKWaLqjm56vsJK5Hof76WuEYlSYa1NxH4OLDA6zW232qpuZ*tkDHa-Z/IMG_1557.JPG

●http://www.keepeanesinformed.com/j0408985%5B1%5D.jpg

●http://blog.garagepunknyc.com/wp-content/uploads/2011/05/the-four-horsemen-of-the-apocalypse2.jpg

●http://uhaweb.hartford.edu/CASS/Marvin.jpg

●http://s47.radikal.ru/i118/1103/59/4e5b69cc8253.jpg

●http://paulsonmanagementgroup.com/media/pmg/hansel%20and%20gretel[rz].jpg

●http://crazy-frankenstein.com/free-wallpapers-files/tropical-wallpapers-files/tropical-wallpapers-beautiful-coast-palm.jpg

●http://crazy-frankenstein.com/free-wallpapers-files/tropical-wallpapers-files/tropical-wallpapers-beautiful-see-and-island.jpg

●http://www.deshow.net/d/file/travel/2009-06/us-landscape-579-2.jpg

●http://xemanhdep.com/gallery/beautiful-landscape/beautiful-landscape17.jpg

●http://images2.wikia.nocookie.net/__cb20100821003145/nonsensopedia/images/6/61/%C5%81%C4%85ka.jpg

PHP Sob Ataque: Técnicas de Programação Defensiva – Rafael Jaques – FISL 12 Porto Alegre

Imagens UtilizadasImagens Utilizadas

●http://3.bp.blogspot.com/_V6QzDsYDdYE/TK6EMYCLE5I/AAAAAAAAO_E/9B5YAhyAU4E/s1600/vader.jpg

●http://www.vecernji.ba/data/slika/39/191271.jpg

●http://aharonideas.files.wordpress.com/2009/05/team-work.jpg

●http://img.vivaolinux.com.br/imagens/artigos/comunidade/backup-plan.jpg

●http://www.portalnerd.com.br/wp-content/uploads/2010/03/godzilla-grande.jpg

●http://games.holyfile.com/upload/screenshot175-5.jpg

●http://4.bp.blogspot.com/-sbtYCenbSyU/Td3J9YXptGI/AAAAAAAAAAg/C29k4W4u8ZQ/s640/cute+babies+hugging-+photoforu.blogspot.com.jpg

●http://images.inmagine.com/img/inspirestock/ispi003/isp0803261.jpg

●http://kimartialartsusa.com/Susan%27s%20best%20kick%20pic%205-9-09.JPG

●http://96.9.22.103/wp-content/uploads/2011/02/iStock_000006411427Medium.jpg

●http://www.bbc.co.uk/kent/content/images/2008/05/11/queue_470x355.jpg

●http://groundmart.net/wp-content/uploads/2010/07/ased.jpg

●http://blogs.shave.com/azor/bigstockphoto_man_shouting_through_megaphone_2233138.jpg

●http://contigo.abril.com.br/blog/passione-novela/files/2010/06/passione-berilo-5501.jpg

●http://www.psdgraphics.com/file/https.jpg

●http://hope.lightgivesheat.org/uploads/blog/.thumbs/thumbs_up_large_a41147.jpg

●http://ianimal.ru/wp-content/uploads/2011/01/skzh-1301.jpg

●http://store.picbg.net/pubpic/A7/30/673a359a020ca730.jpg

●http://farm3.static.flickr.com/2787/4195840875_d73a99a9c5.jpg

●http://phpsec.org/images/phpsc-logo.gif

●http://www.pegadasnaareia.com/wp-content/uploads/2010/01/pope-sunday.jpg

●http://cdn2.knowyourmeme.com/i/000/100/756/original/Challenge%20Accepted.png

●http://www.turkcebilgi.com/uploads/media/resim/largada_stock125_foto_claudio_reis.jpg

●http://ibloggr.com/wp-content/uploads/2011/04/questions-answer-sites-like-yahoo-answer.jpg