Como Prevenir Ataques de Hackers no Seu Website
- Postado: 09:08
- |
- Autor: Francisco Luz
- |
- Tags: PHP, Segurança, Tutorial, XSS ataque
XSS Ataques são mais comuns do que se imagina. No vídeo legendado abaixo meu colega Abdi Gulaid explica de uma forma bem simplória mas coerente como ataques são feitos, quais são os tipos mais comuns e como escrever códigos seguros para prevenir vulnerabilidades.
This text will be replaced
Segue abaixo a íntegra das legendas do vídeo acima
1
00:00:19,193 --> 00:00:22,220
XSS Explicado e Demonstrado
2
00:00:22,221 --> 00:00:28,932
Olá, eu sou Abdi Gulaid, um experiente webmaster do bestcoder.co.uk
3
00:00:28,932 --> 00:00:31,986
eu desenvolvi esse vídeo para explicar,
4
00:00:31,987 --> 00:00:36,349
demonstrar e mostrar-lho como previnir-se contra ataques XSS
5
00:00:36,350 --> 00:00:38,491
quando estiver criando websites
6
00:00:38,492 --> 00:00:41,998
se você um webmaster experiente ou novato
7
00:00:41,999 --> 00:00:45,001
e gostaria de aprender como fazer o site de seu cliente mais seguro
8
00:00:45,002 --> 00:00:47,752
então esse vídeo tutorial é pra você
9
00:00:47,753 --> 00:00:52,437
esse vídeo será o mais claro e conciso possível
10
00:00:52,438 --> 00:00:54,727
para facilitar o seu aprendizado
11
00:00:54,728 --> 00:00:59,318
nesse tutorial aprenderemos o que é XSS Ataque
12
00:00:59,319 --> 00:01:03,288
e em seguida irei criar uma site de simulação
13
00:01:03,289 --> 00:01:07,772
para usarmos como cobaia para o nosso ataque
14
00:01:07,772 --> 00:01:13,144
uma vez que fizermos o ataque, ai iremos ver como previnir contra eles
15
00:01:13,145 --> 00:01:16,706
Então, o que é XSS você pergunta
16
00:01:16,707 --> 00:01:20,036
XSS é uma sigla para Cross-Site Scripting
17
00:01:20,037 --> 00:01:23,889
XSS é uma vulnerabilidade de segurança
18
00:01:23,890 --> 00:01:26,801
que pode ser encontrada em web aplicações mal desenvolvidas
19
00:01:26,802 --> 00:01:31,487
que permite pessoas mal intensionadas à injetarem client-side scripts,
20
00:01:31,487 --> 00:01:35,113
tais como JavaScript, na página da aplicação
21
00:01:35,114 --> 00:01:37,596
XSS ataques é muito comum
22
00:01:37,597 --> 00:01:41,995
e foi responsável por 70% de todos os ataques em 2007
23
00:01:41,996 --> 00:01:45,007
de acordo com estatísticas publicadas pela Symantic
24
00:01:45,008 --> 00:01:49,927
XSS ataques existe desde o nascimento da internet
25
00:01:49,928 --> 00:01:54,404
e grandes corporações tem sido imunes à XSS ataques
26
00:01:54,405 --> 00:02:00,175
empresas que foram alvos incluem
27
00:02:00,176 --> 00:02:07,344
Google, Yahoo, Facebook e Twitter
28
00:02:07,345 --> 00:02:10,527
previnir que seus clientes sejam alvos é algo
29
00:02:10,528 --> 00:02:13,360
super importante durante o processo de desenvolvimento
30
00:02:13,361 --> 00:02:16,616
e esse é o mas provável tipo de ataque que
31
00:02:16,617 --> 00:02:19,066
um hacker vai tentar contra um website
32
00:02:19,067 --> 00:02:23,210
Bons profissionais devem entender a importância disto
33
00:02:23,211 --> 00:02:28,390
pra demonstrar um XSS, eu irei agora criar uma pequena aplicação web
34
00:02:28,391 --> 00:02:31,009
essa será uma página de artigos bem simples
35
00:02:31,010 --> 00:02:33,521
a qual permitirá que pessoas deixem comentários
36
00:02:33,522 --> 00:02:37,251
e a escreverei em PHP, pois este é a linguagem mais usada na Web
37
00:02:37,252 --> 00:02:40,754
e MYSQL como banco de dados para salvar os comentários
38
00:06:18,598 --> 00:06:23,050
pronto! nossa pequena aplicação está pronta
39
00:06:23,051 --> 00:06:26,411
antes que eu possa demonstrar como um XSS ataque funciona
40
00:06:26,412 --> 00:06:28,848
e como prevenir contra um
41
00:06:28,849 --> 00:06:32,092
deixe me explicar os dois tipos de XSS ataques
42
00:06:32,093 --> 00:06:35,561
XSS ataques tem duas variantes
43
00:06:35,562 --> 00:06:37,876
a primeira é a "Não Pesistente"
44
00:06:37,877 --> 00:06:39,841
a qual é a mais comum
45
00:06:39,842 --> 00:06:44,121
o código malicioso é injetado diratamente na URL do site
46
00:06:44,122 --> 00:06:49,455
e o hacker precisará que alguém explicitamente use a URL comprometida
47
00:06:49,456 --> 00:06:51,440
para que o ataque prossiga
48
00:06:51,441 --> 00:06:56,248
a URL é normalmente distribuida por email
49
00:06:56,249 --> 00:06:58,943
ou outras formas para colocar o ataque em ação
50
00:06:58,944 --> 00:07:01,527
e a segunda variante é a "Persitente"
51
00:07:01,528 --> 00:07:05,067
essa é menos comum mas muito mais perigosa
52
00:07:05,068 --> 00:07:08,746
o código malicioso é injetado de forma permanente na página
53
00:07:08,747 --> 00:07:13,359
o qual roda repedidamente a cada visita que a página tenha
54
00:07:13,360 --> 00:07:19,397
ok, agora vamos ver como é feito um ataque "Não Persistente"
55
00:07:19,398 --> 00:07:26,970
como disse agora a pouco, essa forma de ataque consiste na injeção
56
00:07:26,971 --> 00:07:28,544
de código na URL da página
57
00:07:28,545 --> 00:07:33,222
essa aplicação está intencionalmente vulnerável a esse tipo de ataque
58
00:07:33,223 --> 00:07:35,375
para que eu possa lhe mostrar como o ataque é feito
59
00:07:35,376 --> 00:07:40,254
como demonstração, eu irei inserir um alerta em JavaScript
60
00:07:40,255 --> 00:07:42,069
à URL da página
61
00:07:42,070 --> 00:07:46,560
nossa aplicação usa o método GET para receber os dados da URL
62
00:07:46,561 --> 00:07:58,111
assim, tudo que estiver depois do sinal de igual será impresso pelo PHP script
63
00:08:24,842 --> 00:08:27,255
agora eu irei acessar esse link compremetido
64
00:08:27,256 --> 00:08:31,082
e nosso alerta em JavaScript deve ser executado logo após a página carregar
65
00:08:31,083 --> 00:08:35,348
como você pode ver, o JavaScript que colocamos na URL
66
00:08:35,349 --> 00:08:37,120
foi executada
67
00:08:37,121 --> 00:08:40,844
esse foi um XSS ataque bem sucedido
68
00:08:40,845 --> 00:08:44,220
um alerta não causará nenhum mal
69
00:08:44,221 --> 00:08:47,832
mas um hacker geralmente injetará um código
70
00:08:47,833 --> 00:08:50,148
que fará o download de um script em um arquivo externo
71
00:08:50,149 --> 00:08:51,973
o qual fará muito mais estragos
72
00:08:51,974 --> 00:08:57,017
tais como roubar informações de cookies
73
00:08:57,018 --> 00:09:00,499
ou mesmo informações sensíveis guardadas no site
74
00:09:00,500 --> 00:09:03,748
como esse é um ataque "Não Persistente"
75
00:09:03,749 --> 00:09:07,635
o hacker terá distribuir a URL
76
00:09:07,636 --> 00:09:10,147
pra fazer com que as pessoas acessem o link compremetido
77
00:09:10,148 --> 00:09:12,218
e assim iniciar o ataque
78
00:09:12,219 --> 00:09:16,537
ok, esse foi uma demonstração de ataque "Não Persistente"
79
00:09:16,538 --> 00:09:21,330
agora vamos ver a variante "Persistente"
80
00:09:21,331 --> 00:09:25,837
eu fiz a aplicação suceptivel a esse tipo de ataque na área de comentários
81
00:09:25,838 --> 00:09:30,194
novamente, iremos injetar um simples alerta em JavaScript
82
00:09:30,195 --> 00:09:32,913
no comentário para vermos como o ataque é feito
83
00:10:06,528 --> 00:10:10,225
como você pode ver, o nosso script foi executado
84
00:10:10,226 --> 00:10:12,806
e podemos agora ver o alerta
85
00:10:12,807 --> 00:10:16,500
esse tipo de ataque é diferente
86
00:10:16,501 --> 00:10:19,943
pois o script malicioso foi salvo no banco de dados de forma permanente
87
00:10:19,944 --> 00:10:24,336
e assim será executado cada vez que essa página for visitada
88
00:10:24,337 --> 00:10:27,839
enquanto o script for deixado no banco de dados
89
00:10:27,840 --> 00:10:31,703
novamente, um alerta não causa nenhum mal
90
00:10:31,704 --> 00:10:37,535
mas um hacker geralmente injetará um código que fará o download de um script em um arquivo externo
91
00:10:37,536 --> 00:10:39,772
o qual fará muito mais estragos
92
00:10:39,773 --> 00:10:42,644
esses foram os dois tipos de ataques demonstrados
93
00:10:42,645 --> 00:10:47,154
agora vamos ver como prevenir-se contra eles
94
00:10:47,155 --> 00:10:51,042
sempre valide entrada de dados vindas de usuários
95
00:10:51,043 --> 00:10:53,859
nunca confie em dados submetido por usuários
96
00:10:53,860 --> 00:10:57,915
se você tá esperando números, faça a validação para aceita apenas números
97
00:10:57,916 --> 00:11:03,809
ou seja, não aceite dados que não é de acordo com o tipo esperado
98
00:11:03,810 --> 00:11:08,063
sempre faça a sanitização dos dados entrados
99
00:11:08,064 --> 00:11:10,487
antes de salva-los no banco de dados
100
00:11:10,488 --> 00:11:13,927
e sempre faça a sanitização das variáveis $_GET
101
00:11:13,928 --> 00:11:15,677
antes de executar uma query
102
00:11:15,678 --> 00:11:18,271
ou imprimi-los na tela
103
00:11:18,272 --> 00:11:22,186
vou demonstrar agora como fazer isso na nossa aplicação de simulação
104
00:11:22,187 --> 00:11:27,822
a variável $_GET está no momento sendo impressa sem nenhuma higienização
105
00:11:27,823 --> 00:11:32,843
e qualquer código injetado será executado pelo navegador
106
00:11:32,844 --> 00:11:36,392
já sabemos o quanto isso é perigoso
107
00:11:36,393 --> 00:11:41,161
felizmente PHP já vem com algumas funções nativas
108
00:11:41,162 --> 00:11:44,015
que podem ser usadas para higienizar dados
109
00:11:44,016 --> 00:11:47,471
htmlentities() é uma delas
110
00:11:47,472 --> 00:11:51,897
eu usarei essa função para converter todos os caracteres especiais submetidos
111
00:11:51,898 --> 00:11:53,768
em seus respectivos HTML equivalentes
112
00:11:53,769 --> 00:12:02,044
eu encapsalarei a nossa variável $_GET dentro da função htmlentities
113
00:12:07,681 --> 00:12:09,797
pronto!
114
00:12:09,798 --> 00:12:15,420
vamos acessar o link compremetido novamente pra ver se código foi higienizado
115
00:12:21,894 --> 00:12:26,475
ótimo, como você pode ver o ataque falhou
116
00:12:26,476 --> 00:12:29,907
a higienização foi bem sucessida
117
00:12:29,908 --> 00:12:33,421
vamos olhar o código fonte para ver como isso foi feito
118
00:12:33,422 --> 00:12:39,307
podemos ver que quase todos os caracteres especiais
119
00:12:39,308 --> 00:12:42,483
foram convertidos em entidades HTML
120
00:12:42,484 --> 00:12:46,625
assim impedir que o script injetado não seja executado
121
00:12:46,626 --> 00:12:53,813
ok, vamos ver agora como prevenir o ataque "Persistente"
122
00:12:53,814 --> 00:12:55,429
em nossa área de comentários
123
00:12:55,430 --> 00:13:03,520
como podemos ver, o código PHP não faz a higienização dos dados a serem salvos
124
00:13:03,521 --> 00:13:10,713
eu irei simplesmente encapsular as variáveis 'name' e 'comment' dentro da função htmlentities
125
00:13:10,714 --> 00:13:15,116
para que os dados sejam higienizados antes de serem salvos no banco de dados
126
00:13:26,620 --> 00:13:34,405
pronto, vamos ver agora se o ataque na área de comentários irá funcionar
127
00:14:05,635 --> 00:14:11,309
como podemos ver, o código injetado não foi executado
128
00:14:11,310 --> 00:14:15,181
e de fato o código foi higienizado
129
00:14:15,182 --> 00:14:21,123
vamos olhar o código fonte e ver a parte do comentário
130
00:14:25,683 --> 00:14:33,085
a função htmlentities converteu todos os caracteres especiais em suas respectivos entidades
131
00:14:33,086 --> 00:14:36,077
isso é exatamente o que queremos
132
00:14:36,078 --> 00:14:41,301
e como resultado, o XSS ataque falhou
133
00:14:41,302 --> 00:14:45,022
esse foi XSS explicado e demonstrado
134
00:14:45,023 --> 00:14:49,651
você agora está preparado para prevenir um ataque XSS
135
00:14:49,652 --> 00:14:52,379
e assim deixar os sites de seus clientes mais seguros
136
00:14:52,380 --> 00:14:57,471
Obrigado por assistir
Compartilhe:
- RSS -->
Pesquisar-
Assuntos-
- Internet e Tecnologia (4)
- Web 2.0 (4)
- Drupal (3)
- Notícias (3)
- Webdesigner (3)
- Webmaster (3)
- vídeos (3)
- CMF (2)
- CMS (2)
- Criar Websites (2)
- Estratégias (2)
- Ray Willian Johnson (2)
- Segurança (2)
- Tutorial (2)
- comédia (2)
- Android (1)
- Ataque (1)
- Brasil (1)
- Estudos (1)
- Expressões Regulares (1)
- Google (1)
- HTML (1)
- Hackers (1)
- Marketing (1)
- PHP (1)
- Publicidade Online (1)
- Redes Sociais (1)
- RegExp (1)
- Viral Videos (1)
- XSS ataque (1)
- doctype.tv (1)
- temas (1)
Oferecimento-
Postar um comentário