69
PHP Sob Ataque: Técnicas de Programação Defensiva Rafael Jaques Rafael Jaques FISL 12 – Porto Alegre – 01/07/11 FISL 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)

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

Embed Size (px)

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

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

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)

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

Antes de começar, vou falar

sobre o Tchelinux...

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

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

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

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

http://www.slideshare.net/rafajaques

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

Então vamos lá!

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

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

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

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...

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

CAPÍTULO I

Conceito

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

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)

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

Como saber se estou programando defensivamente?

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

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

criado, já é um bom começo.

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

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

subestime o usuário.

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

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

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

CAPÍTULO II

Comofas/

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

Código mais simplesé melhor!

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

Código complexo é oberço dos bugs!

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

Evite colocar arquivos na raiz.

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

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

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

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

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

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

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

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

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

Estude sobre Canonicalization.

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

Omita as tags de fechamento.

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

Esteja preparado para o pior.

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

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

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

Backup!

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

robots.txt – muito cuidado ao usar!

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

● Prefira o Google Webmaster Tools para desindexar algo

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

Cuidado com o Havij !

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

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

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

● 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

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

CAPÍTULO III

Engenharia Social e aArte de Invadir Pessoas

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

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

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

Seres humanos tendem a serbonzinhos com o semelhante.

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

Engenheiros sociais se aproveitamda ingenuidade das pessoas.

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

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

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

CAPÍTULO IV

Inteligência Coletiva,Semi-celebridades e

Ameaças Reais

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

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

é 100% segura...

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

Ataque de Negação de Serviço!

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

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

Page 42: PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
Page 43: PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
Page 44: PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
Page 45: PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
Page 46: PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques

Cases de Ataque ao Usuário

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

Phishing!

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

Scam!

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

CAPÍTULO V

Protegendo o PreciosoAnel do Seu Usuário

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

Monitore o IP e o Refererdo seu usuário.

IP $_SERVER['REMOTE_ADDR']

Referer$_SERVER['HTTP_REFERER']

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

Alerte-o sobre os taisPhishing e Scam!

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

Utilize timeouts

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

HTTPS na veia!

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

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

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

CAPÍTULO VI

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

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

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

ajudar no caminho.

Page 57: PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
Page 58: PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
Page 59: PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques

Tá... Respira um pouco...

Page 60: PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
Page 61: PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
Page 62: PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
Page 63: PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
Page 64: PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques

CAPÍTULO VII

Considerações finais

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

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

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

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

ObrigadoObrigado

Rafael Jaques

phpit.com.br

[email protected]

@rafajaques

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

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

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

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

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

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