Slide 1

Slide 1 text

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)

Slide 2

Slide 2 text

Antes de começar, vou falar sobre o Tchelinux...

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

Essa palestra é uma continuação da realizada no ano passado... http://www.slideshare.net/rafajaques

Slide 5

Slide 5 text

Então vamos lá!

Slide 6

Slide 6 text

PHP Sob Ataque: Técnicas de Programação Defensiva – Rafael Jaques – FISL 12 Porto Alegre Objetivo Objetivo ● 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

Slide 7

Slide 7 text

PHP Sob Ataque: Técnicas de Programação Defensiva – Rafael Jaques – FISL 12 Porto Alegre Pauta Pauta 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...

Slide 8

Slide 8 text

CAPÍTULO I Conceito

Slide 9

Slide 9 text

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)

Slide 10

Slide 10 text

Como saber se estou programando defensivamente?

Slide 11

Slide 11 text

Se uma pessoa (que não você) consegue entender o código que foi criado, já é um bom começo.

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

Lembre-se que o seu có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

Slide 15

Slide 15 text

CAPÍTULO II Comofas/

Slide 16

Slide 16 text

Código mais simples é melhor!

Slide 17

Slide 17 text

Código complexo é o berço dos bugs!

Slide 18

Slide 18 text

Evite colocar arquivos na raiz.

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

Estude sobre Canonicalization.

Slide 24

Slide 24 text

Omita as tags de fechamento.

Slide 25

Slide 25 text

Esteja preparado para o pior.

Slide 26

Slide 26 text

Tenha um plano de contingência para o caso de um apocalipse.

Slide 27

Slide 27 text

Backup!

Slide 28

Slide 28 text

robots.txt – muito cuidado ao usar! ● Evite usar para proteger informações vitais do sistema ● Prefira o Google Webmaster Tools para desindexar algo

Slide 29

Slide 29 text

Cuidado com o Havij !

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

● 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

Slide 32

Slide 32 text

CAPÍTULO III Engenharia Social e a Arte de Invadir Pessoas

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

Seres humanos tendem a ser bonzinhos com o semelhante.

Slide 35

Slide 35 text

Engenheiros sociais se aproveitam da ingenuidade das pessoas.

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

CAPÍTULO IV Inteligência Coletiva, Semi-celebridades e Ameaças Reais

Slide 38

Slide 38 text

É mais ou menos o que eu falei no ano passado sobre o fato de dizer que a sua aplicação é 100% segura...

Slide 39

Slide 39 text

Ataque de Negação de Serviço!

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

Cases de Ataque ao Usuário

Slide 47

Slide 47 text

Phishing!

Slide 48

Slide 48 text

Scam!

Slide 49

Slide 49 text

CAPÍTULO V Protegendo o Precioso Anel do Seu Usuário

Slide 50

Slide 50 text

Monitore o IP e o Referer do seu usuário. IP $_SERVER['REMOTE_ADDR'] Referer $_SERVER['HTTP_REFERER']

Slide 51

Slide 51 text

Alerte-o sobre os tais Phishing e Scam!

Slide 52

Slide 52 text

Utilize timeouts

Slide 53

Slide 53 text

HTTPS na veia!

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

CAPÍTULO VI OMG! TODOS SÃO INIMIGOS? ONDE VOU ME PROTEGER?

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

No content

Slide 59

Slide 59 text

Tá... Respira um pouco...

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

CAPÍTULO VII Considerações finais

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

PHP Sob Ataque: Técnicas de Programação Defensiva – Rafael Jaques – FISL 12 Porto Alegre Obrigado Obrigado Rafael Jaques phpit.com.br rafa@php.net @rafajaques

Slide 67

Slide 67 text

PHP Sob Ataque: Técnicas de Programação Defensiva – Rafael Jaques – FISL 12 Porto Alegre Fontes Consultadas Fontes Consultadas ● http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_defe ● http://www.slideshare.net/gscheibel/programao-defensiva ● http://jmmwrite.wordpress.com/tag/programacao-defensiva/ ● http://www.ibm.com/developerworks/br/library/os-php-5goodh ● http://www.wellho.net/mouth/1694_Defensive-coding-techniq ● http://en.wikipedia.org/wiki/Defensive_programming ● http://www.phpclasses.org/blog/post/65-8-defensive-programm ● http://www.phpclasses.org/blog/post/66-More-defensive-prog ● http://www.slideshare.net/ergalvao/php-e-segurana-uma-unio- ● http://www.slideshare.net/ergalvao/implementando-segurana-

Slide 68

Slide 68 text

PHP Sob Ataque: Técnicas de Programação Defensiva – Rafael Jaques – FISL 12 Porto Alegre Imagens Utilizadas Imagens 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

Slide 69

Slide 69 text

PHP Sob Ataque: Técnicas de Programação Defensiva – Rafael Jaques – FISL 12 Porto Alegre Imagens Utilizadas Imagens 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