﻿1
00:00:01,210 --> 00:00:04,340
‫Narrateur : Bienvenue à la dernière vidéo de cette section.

2
00:00:04,340 --> 00:00:05,610
‫Et dans celui-ci,

3
00:00:05,610 --> 00:00:07,880
‫nous allons empêcher la pollution des

4
00:00:07,880 --> 00:00:10,593
‫paramètres, en utilisant encore un autre package NPM.

5
00:00:12,270 --> 00:00:15,400
‫Mais avant d'installer ce

6
00:00:15,400 --> 00:00:17,780
‫package, examinons l'erreur.

7
00:00:17,780 --> 00:00:20,820
‫Mais avant de faire cela, passons à Postman et

8
00:00:20,820 --> 00:00:22,290
‫voyons pourquoi nous devons

9
00:00:22,290 --> 00:00:25,363
‫en fait empêcher la pollution des paramètres en premier lieu.

10
00:00:27,410 --> 00:00:30,993
‫Donc, tout d'abord, nous devons nous connecter.

11
00:00:32,240 --> 00:00:35,590
‫Bon, donc, avec cet utilisateur et ce mot de passe.

12
00:00:35,590 --> 00:00:39,290
‫Nous pouvons donc maintenant utiliser l'itinéraire Get All Tours.

13
00:00:39,290 --> 00:00:41,570
‫Très bien, et donc ce que je

14
00:00:41,570 --> 00:00:45,140
‫vais faire maintenant, c'est d'ajouter des paramètres à la chaîne de requête.

15
00:00:45,140 --> 00:00:49,443
‫Alors voyons, je veux trier par durée, et

16
00:00:52,830 --> 00:00:57,233
‫en même temps, je veux aussi trier par prix.

17
00:00:58,110 --> 00:01:01,140
‫Et cela n'a pas vraiment de sens parce

18
00:01:01,140 --> 00:01:05,100
‫que nous sommes prêts à n'avoir qu'un seul paramètre de tri.

19
00:01:05,100 --> 00:01:08,310
‫Voyons donc ce que nous obtenons réellement avec cela.

20
00:01:08,310 --> 00:01:11,849
‫Et en effet, nous obtenons une erreur disant que this. chaîne de requête. sorte. split n'est pas une fonction.

21
00:01:11,849 --> 00:01:15,890
‫Et c'est ce qui se passe dans les apiFeatures. js à la ligne 23.

22
00:01:15,890 --> 00:01:20,890
‫Alors ouvrons cela et donc ici, à la ligne 23, c'est là

23
00:01:22,550 --> 00:01:23,800
‫que cette erreur se produit.

24
00:01:26,560 --> 00:01:31,560
‫Il essaie donc de diviser la propriété sort ici, que

25
00:01:32,520 --> 00:01:35,710
‫nous attendons d'être une chaîne.

26
00:01:35,710 --> 00:01:37,930
‫Mais pour le moment, puisque nous l'avons

27
00:01:37,930 --> 00:01:41,110
‫défini deux fois, donc triez une fois puis triez deux fois, express

28
00:01:41,110 --> 00:01:44,510
‫créera en fait un tableau avec ces deux valeurs, durée et prix.

29
00:01:44,510 --> 00:01:48,423
‫Permettez-moi de vous montrer cela.

30
00:01:49,610 --> 00:01:51,713
‫Console. Journal.

31
00:01:54,320 --> 00:01:55,800
‫Maintenant, je le copie.

32
00:01:55,800 --> 00:01:57,053
‫D'accord, réessayez.

33
00:02:01,660 --> 00:02:03,323
‫Voici la même erreur et comme

34
00:02:04,210 --> 00:02:07,490
‫je l'ai dit, il s'agit en fait d'un tableau avec durée et prix.

35
00:02:07,490 --> 00:02:10,540
‫Et pour que bien sûr, nous ne puissions pas diviser parce que la division

36
00:02:10,540 --> 00:02:12,520
‫ne fonctionne que sur les chaînes, d'accord ?

37
00:02:12,520 --> 00:02:16,370
‫C'est donc un problème typique que

38
00:02:16,370 --> 00:02:19,850
‫les attaquants peuvent ensuite utiliser.

39
00:02:19,850 --> 00:02:21,920
‫Très bien, et donc en gros, nous

40
00:02:21,920 --> 00:02:24,480
‫allons maintenant utiliser un middleware qui supprimera simplement ces

41
00:02:24,480 --> 00:02:26,290
‫champs en double, d'accord ?

42
00:02:26,290 --> 00:02:30,930
‫Et celui-là, installons-le.

43
00:02:30,930 --> 00:02:33,470
‫Il s'appelle

44
00:02:33,470 --> 00:02:38,200
‫HPP qui signifie HTTP Parameter pollution.

45
00:02:38,200 --> 00:02:40,393
‫D'accord.

46
00:02:42,080 --> 00:02:42,913
‫Exigons-le rapidement ici.

47
00:02:45,700 --> 00:02:47,883
‫Très bien, et donc, c'est encore un autre très simple.

48
00:02:55,810 --> 00:03:00,550
‫Tout ce que nous devons faire, c'est app. utiliser puis appeler HPP.

49
00:03:00,550 --> 00:03:05,263
‫Donc, évitez la pollution des paramètres.

50
00:03:06,710 --> 00:03:10,750
‫Et celui-ci devrait encore être utilisé ici à la

51
00:03:12,750 --> 00:03:15,910
‫fin, d'accord, car il clarifie la chaîne

52
00:03:15,910 --> 00:03:18,120
‫de requête, d'accord ?

53
00:03:18,120 --> 00:03:20,470
‫Essayons donc à nouveau.

54
00:03:20,470 --> 00:03:22,003
‫Cela prend un peu de temps, et c'est parti.

55
00:03:24,050 --> 00:03:26,690
‫L'erreur a donc disparu et maintenant, elle n'utilise

56
00:03:26,690 --> 00:03:28,080
‫que la dernière.

57
00:03:28,080 --> 00:03:31,120
‫Donc c'est trier mon prix maintenant

58
00:03:31,120 --> 00:03:34,930
‫et en effet nous commençons par le plus bas,

59
00:03:34,930 --> 00:03:38,760
‫puis nous remontons 497, jusqu'au plus cher de près

60
00:03:38,760 --> 00:03:40,860
‫de 3000, d'accord ?

61
00:03:40,860 --> 00:03:44,423
‫C'est donc en quelque sorte corrigé, mais nous voulons en fait des propriétés ou

62
00:03:45,380 --> 00:03:48,260
‫des champs en double dans certains cas, n'est-ce pas ?

63
00:03:48,260 --> 00:03:52,800
‫Par exemple, nous pourrions vouloir rechercher des circuits d'une

64
00:03:52,800 --> 00:03:55,690
‫durée de neuf et cinq.

65
00:03:55,690 --> 00:03:57,913
‫Alors rappelez-vous que dans notre API, nous

66
00:04:01,690 --> 00:04:04,960
‫pouvons faire cela, donc la durée est égale à cinq, et

67
00:04:04,960 --> 00:04:08,283
‫nous pouvons dire, en même temps, la durée neuf, d'accord ?

68
00:04:09,670 --> 00:04:13,980
‫Et nous voulons que cela fonctionne, mais pour le moment, ce n'est pas le cas.

69
00:04:13,980 --> 00:04:17,740
‫Il ne trouve que la tournée avec neuf jours, non?

70
00:04:17,740 --> 00:04:22,010
‫Mais si nous ne l'avions pas fait, ou un middleware HPP.

71
00:04:22,010 --> 00:04:24,823
‫Désactivons-le donc.

72
00:04:26,000 --> 00:04:28,253
‫Donc, si nous ne l'avions pas activé,

73
00:04:29,130 --> 00:04:31,130
‫nous trouverions trois tournées, une avec une

74
00:04:31,130 --> 00:04:35,130
‫durée de cinq, puis ici avec une durée de neuf et ici une autre

75
00:04:35,130 --> 00:04:37,000
‫avec une durée de cinq.

76
00:04:37,000 --> 00:04:39,300
‫D'accord, et donc dans ce cas, c'est en

77
00:04:39,300 --> 00:04:40,930
‫fait le comportement attendu.

78
00:04:40,930 --> 00:04:43,890
‫Alors, que pouvons-nous faire pour pouvoir utiliser le

79
00:04:43,890 --> 00:04:45,800
‫middleware tout en obtenant

80
00:04:45,800 --> 00:04:48,463
‫ce résultat que nous attendons ici, avec

81
00:04:48,463 --> 00:04:51,670
‫la durée, nous pouvons lister certains paramètres, d'accord ?

82
00:04:51,670 --> 00:04:55,770
‫Donc, dans cette fonction HPP, nous pouvons à nouveau

83
00:04:55,770 --> 00:05:00,770
‫passer un objet, puis là-dedans, spécifier la liste blanche, d'accord ?

84
00:05:01,050 --> 00:05:05,543
‫Et la liste blanche est simplement un tableau de propriétés pour lesquelles

85
00:05:06,560 --> 00:05:10,690
‫nous autorisons en fait les doublons dans la chaîne de requête.

86
00:05:10,690 --> 00:05:14,213
‫D'accord?

87
00:05:15,990 --> 00:05:16,823
‫Et la durée en fait bien sûr partie, d'accord ?

88
00:05:16,823 --> 00:05:20,943
‫Alors, essayons à nouveau.

89
00:05:22,070 --> 00:05:23,543
‫Et donc, en ce moment, nous obtenons toujours nos trois résultats comme avant.

90
00:05:26,292 --> 00:05:30,890
‫Mais si nous l'essayions avec sort, créons un

91
00:05:30,890 --> 00:05:33,480
‫nouvel onglet ici.

92
00:05:33,480 --> 00:05:35,483
‫Donc, si nous l'avons essayé avec ces

93
00:05:40,990 --> 00:05:43,453
‫doubles tris, nous ne devrions pas non plus obtenir d'erreur.

94
00:05:44,350 --> 00:05:46,730
‫Eh bien, maintenant, nous n'avons pas été connectés, alors

95
00:05:46,730 --> 00:05:48,183
‫récupérons notre jeton d'erreur ici.

96
00:05:49,295 --> 00:05:54,295
‫Essayez à nouveau.

97
00:05:54,400 --> 00:05:55,650
‫Et maintenant, en effet, cela fonctionne, nous n'obtenons aucune erreur.

98
00:05:55,650 --> 00:05:58,870
‫Et pour que le middleware HPP fasse son travail.

99
00:05:58,870 --> 00:06:02,713
‫D'accord?

100
00:06:04,100 --> 00:06:05,680
‫Fermez également celui-ci,

101
00:06:05,680 --> 00:06:09,110
‫et maintenant nous devons également spécifier d'autres champs

102
00:06:09,110 --> 00:06:12,450
‫dans notre liste blanche, car par exemple

103
00:06:12,450 --> 00:06:16,250
‫nous voulons également rechercher celui-ci, ou la quantité d'évaluations.

104
00:06:16,250 --> 00:06:18,130
‫Et donc, copions-les tous ici dans notre liste blanche.

105
00:06:18,130 --> 00:06:21,863
‫Donc la moyenne aussi.

106
00:06:28,940 --> 00:06:30,423
‫Ensuite, la durée que

107
00:06:35,210 --> 00:06:38,700
‫nous avons déjà, et disons la taille maximale du groupe.

108
00:06:38,700 --> 00:06:40,403
‫Nous pourrions aussi vouloir la difficulté.

109
00:06:46,680 --> 00:06:48,983
‫Et aussi le prix.

110
00:06:54,920 --> 00:06:56,070
‫Et je pense que cela devrait alors suffire.

111
00:06:56,070 --> 00:06:58,773
‫D'accord.

112
00:07:03,370 --> 00:07:04,223
‫Et cela peut

113
00:07:05,950 --> 00:07:09,540
‫sembler un peu étrange de mettre manuellement tous les noms de champs ici et plus

114
00:07:09,540 --> 00:07:12,350
‫tard, nous devrons peut-être faire la même chose pour les autres

115
00:07:12,350 --> 00:07:15,410
‫ressources, ce qui rendra cette liste blanche encore plus grande, n'est-ce pas ?

116
00:07:15,410 --> 00:07:19,010
‫Et bien sûr, nous pourrions faire des choses complexes ici afin

117
00:07:19,010 --> 00:07:21,860
‫d'obtenir ces noms de champs à partir du modèle

118
00:07:21,860 --> 00:07:23,930
‫lui-même, mais encore une fois,

119
00:07:23,930 --> 00:07:26,690
‫je veux juste rester simple ici, d'accord ?

120
00:07:26,690 --> 00:07:28,980
‫Et donc je définis manuellement ces noms

121
00:07:28,980 --> 00:07:32,160
‫de champs ici, puis je l'appelle un jour, d'accord ?

122
00:07:32,160 --> 00:07:34,900
‫D'accord, et cela termine en

123
00:07:34,900 --> 00:07:38,620
‫fait notre section d'authentification, d'autorisation et de sécurité.

124
00:07:38,620 --> 00:07:41,590
‫Et si vous voulez vous amuser un peu plus, alors bien

125
00:07:41,590 --> 00:07:44,620
‫sûr, vous pouvez essayer de mettre en œuvre certaines des choses

126
00:07:44,620 --> 00:07:46,730
‫que j'ai suggérées dans cette vidéo récapitulative

127
00:07:46,730 --> 00:07:49,213
‫que je vous ai déjà montrée avec cette diapositive

128
00:07:49,213 --> 00:07:51,260
‫avec toutes ces différentes mesures de sécurité

129
00:07:51,260 --> 00:07:53,160
‫que nous avons déjà mises en

130
00:07:53,160 --> 00:07:55,530
‫œuvre et certains dont je vous ai dit d'expérimenter.

131
00:07:55,530 --> 00:07:57,970
‫Alors n'hésitez pas à le faire, ou

132
00:07:57,970 --> 00:08:00,700
‫sinon, eh bien, passons ensemble à la section

133
00:08:00,700 --> 00:08:04,330
‫suivante qui sera à nouveau vraiment passionnante, car nous commencerons alors

134
00:08:04,330 --> 00:08:06,750
‫vraiment à modéliser les données

135
00:08:06,750 --> 00:08:09,800
‫et à apprendre des choses plus avancées sur MongoDB.

136
00:08:09,800 --> 00:08:12,920
‫Alors j'ai hâte de vous y voir.

