﻿1
00:00:01,210 --> 00:00:04,340
‫Narrador: Bem-vindo ao último vídeo desta seção.

2
00:00:04,340 --> 00:00:05,610
‫E neste,

3
00:00:05,610 --> 00:00:07,880
‫vamos prevenir a poluição dos

4
00:00:07,880 --> 00:00:10,593
‫parâmetros, usando mais um pacote NPM.

5
00:00:12,270 --> 00:00:15,400
‫Mas antes de instalar esse pacote,

6
00:00:15,400 --> 00:00:17,780
‫vamos examinar o erro.

7
00:00:17,780 --> 00:00:20,820
‫Mas antes de fazer isso, vamos ao Postman e

8
00:00:20,820 --> 00:00:22,290
‫ver por que realmente

9
00:00:22,290 --> 00:00:25,363
‫precisamos evitar a poluição dos parâmetros em primeiro lugar.

10
00:00:27,410 --> 00:00:30,993
‫Então, primeiro, precisamos fazer o login.

11
00:00:32,240 --> 00:00:35,590
‫Ok, então, com esse usuário e essa senha.

12
00:00:35,590 --> 00:00:39,290
‫Agora podemos usar a rota Get All Tours.

13
00:00:39,290 --> 00:00:41,570
‫Tudo bem, então o que farei

14
00:00:41,570 --> 00:00:45,140
‫agora aqui é adicionar alguns parâmetros à string de consulta.

15
00:00:45,140 --> 00:00:49,443
‫Então, vamos ver, eu quero classificar por duração

16
00:00:52,830 --> 00:00:57,233
‫e, ao mesmo tempo, também quero classificar por preço.

17
00:00:58,110 --> 00:01:01,140
‫E isso não faz muito sentido

18
00:01:01,140 --> 00:01:05,100
‫porque estamos preparados para ter apenas um parâmetro de classificação.

19
00:01:05,100 --> 00:01:08,310
‫Então, vamos ver o que realmente temos com isso.

20
00:01:08,310 --> 00:01:11,849
‫E, de fato, recebemos um erro dizendo isso. string de consulta. organizar. dividir não é uma função.

21
00:01:11,849 --> 00:01:15,890
‫E isso está acontecendo no apiFeatures. js na linha 23.

22
00:01:15,890 --> 00:01:20,890
‫Vamos abrir isso e aqui, na linha 23 é

23
00:01:22,550 --> 00:01:23,800
‫onde ocorre o erro.

24
00:01:26,560 --> 00:01:31,560
‫Portanto, ele está tentando dividir a propriedade sort aqui,

25
00:01:32,520 --> 00:01:35,710
‫que esperamos ser uma string.

26
00:01:35,710 --> 00:01:37,930
‫Mas agora, uma vez que o definimos duas

27
00:01:37,930 --> 00:01:41,110
‫vezes, classifique uma vez e, em seguida, classifique duas vezes, o express

28
00:01:41,110 --> 00:01:44,510
‫irá, na verdade, criar um array com esses dois valores, duração e preço.

29
00:01:44,510 --> 00:01:48,423
‫Deixe-me mostrar isso para você.

30
00:01:49,610 --> 00:01:51,713
‫Console. registro.

31
00:01:54,320 --> 00:01:55,800
‫Agora estou copiando.

32
00:01:55,800 --> 00:01:57,053
‫Ok, tente novamente.

33
00:02:01,660 --> 00:02:03,323
‫Aqui está o mesmo erro e

34
00:02:04,210 --> 00:02:07,490
‫como eu disse, é na verdade uma matriz com duração e preço.

35
00:02:07,490 --> 00:02:10,540
‫E é claro que não podemos dividir porque a divisão

36
00:02:10,540 --> 00:02:12,520
‫só funciona em strings, certo?

37
00:02:12,520 --> 00:02:16,370
‫E, portanto, esse é um problema típico do

38
00:02:16,370 --> 00:02:19,850
‫qual os invasores podem fazer uso.

39
00:02:19,850 --> 00:02:21,920
‫Tudo bem, basicamente agora vamos

40
00:02:21,920 --> 00:02:24,480
‫usar um middleware que simplesmente removerá

41
00:02:24,480 --> 00:02:26,290
‫esses campos duplicados, certo?

42
00:02:26,290 --> 00:02:30,930
‫E esse, vamos instalá-lo.

43
00:02:30,930 --> 00:02:33,470
‫É chamado de

44
00:02:33,470 --> 00:02:38,200
‫HPP, que significa poluição do parâmetro HTTP.

45
00:02:38,200 --> 00:02:40,393
‫Tudo bem.

46
00:02:42,080 --> 00:02:42,913
‫Vamos solicitá-lo rapidamente aqui.

47
00:02:45,700 --> 00:02:47,883
‫Tudo bem, e então, este é mais um muito simples.

48
00:02:55,810 --> 00:03:00,550
‫Tudo o que precisamos fazer é um app. use e ligue para a HPP.

49
00:03:00,550 --> 00:03:05,263
‫Portanto, evite a poluição dos parâmetros.

50
00:03:06,710 --> 00:03:10,750
‫E este aqui novamente deve ser usado no final, ok,

51
00:03:12,750 --> 00:03:15,910
‫porque o que ele faz é limpar a

52
00:03:15,910 --> 00:03:18,120
‫string de consulta, certo?

53
00:03:18,120 --> 00:03:20,470
‫Então, vamos tentar de novo.

54
00:03:20,470 --> 00:03:22,003
‫Está demorando um pouco e vamos lá.

55
00:03:24,050 --> 00:03:26,690
‫Portanto, o erro desapareceu e agora ele está

56
00:03:26,690 --> 00:03:28,080
‫usando apenas o último.

57
00:03:28,080 --> 00:03:31,120
‫Então, está classificando meu preço agora

58
00:03:31,120 --> 00:03:34,930
‫e, de fato, começamos com o mais baixo

59
00:03:34,930 --> 00:03:38,760
‫e depois subimos 497, até chegar ao mais caro

60
00:03:38,760 --> 00:03:40,860
‫de quase 3.000, certo?

61
00:03:40,860 --> 00:03:44,423
‫Então isso é meio que consertado, mas na verdade queremos algumas

62
00:03:45,380 --> 00:03:48,260
‫propriedades ou campos duplicados em alguns casos, certo?

63
00:03:48,260 --> 00:03:52,800
‫Por exemplo, podemos querer pesquisar passeios com a

64
00:03:52,800 --> 00:03:55,690
‫duração de nove e cinco.

65
00:03:55,690 --> 00:03:57,913
‫Portanto, lembre-se de que em nossa

66
00:04:01,690 --> 00:04:04,960
‫API podemos fazer isso, então a duração é igual a

67
00:04:04,960 --> 00:04:08,283
‫cinco e podemos dizer, ao mesmo tempo, duração nove, certo?

68
00:04:09,670 --> 00:04:13,980
‫E queremos que isso realmente funcione, mas agora não.

69
00:04:13,980 --> 00:04:17,740
‫Só encontra o passeio com nove dias, certo?

70
00:04:17,740 --> 00:04:22,010
‫Mas se não tivéssemos, ou middleware HPP.

71
00:04:22,010 --> 00:04:24,823
‫Então, vamos desativá-lo.

72
00:04:26,000 --> 00:04:28,253
‫Então, se não o tivéssemos

73
00:04:29,130 --> 00:04:31,130
‫ativo, encontraríamos três tours, um

74
00:04:31,130 --> 00:04:35,130
‫com duração cinco, aqui com duração nove e aqui outro

75
00:04:35,130 --> 00:04:37,000
‫com duração cinco.

76
00:04:37,000 --> 00:04:39,300
‫Ok, e neste caso, este é

77
00:04:39,300 --> 00:04:40,930
‫realmente o comportamento esperado.

78
00:04:40,930 --> 00:04:43,890
‫Então, o que podemos fazer para poder usar o

79
00:04:43,890 --> 00:04:45,800
‫middleware, mas ainda assim obter

80
00:04:45,800 --> 00:04:48,463
‫o resultado que esperamos aqui, com a

81
00:04:48,463 --> 00:04:51,670
‫duração, podemos colocar alguns parâmetros na lista branca, ok?

82
00:04:51,670 --> 00:04:55,770
‫Então, para esta função HPP, podemos passar mais

83
00:04:55,770 --> 00:05:00,770
‫uma vez um objeto e aí, especificar a lista branca, ok?

84
00:05:01,050 --> 00:05:05,543
‫E a lista branca é simplesmente uma matriz de propriedades

85
00:05:06,560 --> 00:05:10,690
‫para as quais permitimos duplicatas na string de consulta.

86
00:05:10,690 --> 00:05:14,213
‫OK?

87
00:05:15,990 --> 00:05:16,823
‫E a duração é, claro, um deles, certo?

88
00:05:16,823 --> 00:05:20,943
‫Então, vamos tentar de novo.

89
00:05:22,070 --> 00:05:23,543
‫E então, agora ainda temos nossos três resultados como antes.

90
00:05:26,292 --> 00:05:30,890
‫Mas se tentamos com sort, vamos criar uma

91
00:05:30,890 --> 00:05:33,480
‫nova aba aqui.

92
00:05:33,480 --> 00:05:35,483
‫Portanto, se tentássemos com essas

93
00:05:40,990 --> 00:05:43,453
‫classificações duplas, também não deveríamos obter nenhum erro.

94
00:05:44,350 --> 00:05:46,730
‫Bem, agora não estávamos logados, então vamos pegar nosso

95
00:05:46,730 --> 00:05:48,183
‫token de erro aqui.

96
00:05:49,295 --> 00:05:54,295
‫Tente de novo.

97
00:05:54,400 --> 00:05:55,650
‫E agora realmente funciona, não temos nenhum erro.

98
00:05:55,650 --> 00:05:58,870
‫E para que o middleware HPP esteja fazendo seu trabalho.

99
00:05:58,870 --> 00:06:02,713
‫Tudo bem?

100
00:06:04,100 --> 00:06:05,680
‫Também feche este

101
00:06:05,680 --> 00:06:09,110
‫aqui, e agora devemos especificar alguns outros campos

102
00:06:09,110 --> 00:06:12,450
‫em nossa lista branca, porque por exemplo

103
00:06:12,450 --> 00:06:16,250
‫queremos pesquisar este também, ou a quantidade de avaliações.

104
00:06:16,250 --> 00:06:18,130
‫E então vamos apenas copiar todos eles aqui em nossa lista branca.

105
00:06:18,130 --> 00:06:21,863
‫Então, a média também.

106
00:06:28,940 --> 00:06:30,423
‫Então também a duração

107
00:06:35,210 --> 00:06:38,700
‫que já temos, e digamos o tamanho máximo do grupo.

108
00:06:38,700 --> 00:06:40,403
‫Também podemos querer a dificuldade.

109
00:06:46,680 --> 00:06:48,983
‫E também o preço.

110
00:06:54,920 --> 00:06:56,070
‫E acho que isso deve ser o suficiente.

111
00:06:56,070 --> 00:06:58,773
‫Tudo bem.

112
00:07:03,370 --> 00:07:04,223
‫E pode parecer

113
00:07:05,950 --> 00:07:09,540
‫um pouco estranho basicamente colocar manualmente todos os nomes de campo aqui e

114
00:07:09,540 --> 00:07:12,350
‫depois poderemos ter que fazer a mesma coisa para os

115
00:07:12,350 --> 00:07:15,410
‫outros recursos, e isso tornará essa lista branca ainda maior, certo?

116
00:07:15,410 --> 00:07:19,010
‫E é claro que poderíamos fazer algumas coisas complexas

117
00:07:19,010 --> 00:07:21,860
‫aqui para obter esses nomes de campo do

118
00:07:21,860 --> 00:07:23,930
‫próprio modelo, mas, mais

119
00:07:23,930 --> 00:07:26,690
‫uma vez, quero mantê-lo simples aqui, ok?

120
00:07:26,690 --> 00:07:28,980
‫E então estou apenas definindo manualmente esses

121
00:07:28,980 --> 00:07:32,160
‫nomes de campo aqui e, em seguida, encerrar o dia, certo?

122
00:07:32,160 --> 00:07:34,900
‫Ok, e isso realmente encerra

123
00:07:34,900 --> 00:07:38,620
‫nossa seção de autenticação, autorização e segurança.

124
00:07:38,620 --> 00:07:41,590
‫E se você quiser se divertir mais com isso,

125
00:07:41,590 --> 00:07:44,620
‫então é claro, você pode tentar implementar algumas das

126
00:07:44,620 --> 00:07:46,730
‫coisas que sugeri naquele vídeo de

127
00:07:46,730 --> 00:07:49,213
‫resumo que mostrei antes com aquele slide com

128
00:07:49,213 --> 00:07:51,260
‫todas essas diferentes medidas de segurança

129
00:07:51,260 --> 00:07:53,160
‫que já implementamos e alguns

130
00:07:53,160 --> 00:07:55,530
‫dos quais eu disse para você experimentar.

131
00:07:55,530 --> 00:07:57,970
‫Então, fique à vontade para fazer isso,

132
00:07:57,970 --> 00:08:00,700
‫ou se não, vamos juntos passar para

133
00:08:00,700 --> 00:08:04,330
‫a próxima seção, que será realmente empolgante novamente, porque então

134
00:08:04,330 --> 00:08:06,750
‫começaremos a modelar os dados

135
00:08:06,750 --> 00:08:09,800
‫e aprenderemos algumas coisas mais avançadas do MongoDB.

136
00:08:09,800 --> 00:08:12,920
‫Mal posso esperar para te ver lá.

