﻿1
00:00:01,210 --> 00:00:04,340
‫Narratore: Benvenuti all'ultimo video di questa sezione.

2
00:00:04,340 --> 00:00:05,610
‫E in

3
00:00:05,610 --> 00:00:07,880
‫questo, preverremo l'inquinamento dei

4
00:00:07,880 --> 00:00:10,593
‫parametri, utilizzando un altro pacchetto NPM.

5
00:00:12,270 --> 00:00:15,400
‫Ma prima di installare quel pacchetto, andiamo

6
00:00:15,400 --> 00:00:17,780
‫avanti e diamo un'occhiata all'errore.

7
00:00:17,780 --> 00:00:20,820
‫Ma prima di farlo, andiamo da Postman e vediamo

8
00:00:20,820 --> 00:00:22,290
‫perché abbiamo davvero

9
00:00:22,290 --> 00:00:25,363
‫bisogno di prevenire l'inquinamento dei parametri in primo luogo.

10
00:00:27,410 --> 00:00:30,993
‫Quindi, per prima cosa, dobbiamo accedere.

11
00:00:32,240 --> 00:00:35,590
‫Ok, allora, con questo utente e questa password.

12
00:00:35,590 --> 00:00:39,290
‫Quindi ora possiamo usare il percorso Ottieni tutti i tour.

13
00:00:39,290 --> 00:00:41,570
‫Va bene, quindi quello che

14
00:00:41,570 --> 00:00:45,140
‫farò ora è aggiungere alcuni parametri alla stringa di query.

15
00:00:45,140 --> 00:00:49,443
‫Quindi vediamo, voglio ordinare per durata e,

16
00:00:52,830 --> 00:00:57,233
‫allo stesso tempo, voglio anche ordinare per prezzo.

17
00:00:58,110 --> 00:01:01,140
‫E in realtà non ha molto senso,

18
00:01:01,140 --> 00:01:05,100
‫perché siamo pronti ad avere un solo parametro di ordinamento.

19
00:01:05,100 --> 00:01:08,310
‫Quindi vediamo cosa otteniamo effettivamente con questo.

20
00:01:08,310 --> 00:01:11,849
‫E infatti otteniamo un errore dicendo che questo. stringa della domanda. ordinare. la divisione non è una funzione.

21
00:01:11,849 --> 00:01:15,890
‫E così sta succedendo in apiFeatures. js nella riga 23.

22
00:01:15,890 --> 00:01:20,890
‫Quindi apriamolo e quindi qui, sulla riga 23 è

23
00:01:22,550 --> 00:01:23,800
‫dove si verifica l'errore.

24
00:01:26,560 --> 00:01:31,560
‫Quindi sta cercando di dividere la proprietà sort qui, che

25
00:01:32,520 --> 00:01:35,710
‫ci aspettiamo sia una stringa.

26
00:01:35,710 --> 00:01:37,930
‫Ma in questo momento poiché l'abbiamo definito

27
00:01:37,930 --> 00:01:41,110
‫due volte, quindi ordina una volta e poi ordina due volte,

28
00:01:41,110 --> 00:01:44,510
‫express creerà effettivamente un array con questi due valori, durata e prezzo.

29
00:01:44,510 --> 00:01:48,423
‫Lascia che te lo mostri davvero.

30
00:01:49,610 --> 00:01:51,713
‫Consolle. tronco d'albero.

31
00:01:54,320 --> 00:01:55,800
‫Ora lo copio.

32
00:01:55,800 --> 00:01:57,053
‫Ok, riprova.

33
00:02:01,660 --> 00:02:03,323
‫Ecco lo stesso errore e,

34
00:02:04,210 --> 00:02:07,490
‫come ho detto, in realtà è un array con durata e prezzo.

35
00:02:07,490 --> 00:02:10,540
‫E quindi, ovviamente, non possiamo dividere perché la divisione

36
00:02:10,540 --> 00:02:12,520
‫funziona solo sulle stringhe, ok?

37
00:02:12,520 --> 00:02:16,370
‫E quindi questo è un problema tipico

38
00:02:16,370 --> 00:02:19,850
‫che gli aggressori possono poi sfruttare.

39
00:02:19,850 --> 00:02:21,920
‫Va bene, quindi in pratica

40
00:02:21,920 --> 00:02:24,480
‫ora useremo un middleware che rimuoverà semplicemente

41
00:02:24,480 --> 00:02:26,290
‫questi campi duplicati, ok?

42
00:02:26,290 --> 00:02:30,930
‫E quello, installiamolo.

43
00:02:30,930 --> 00:02:33,470
‫Si chiama HPP

44
00:02:33,470 --> 00:02:38,200
‫che sta per inquinamento da parametri HTTP.

45
00:02:38,200 --> 00:02:40,393
‫Va bene.

46
00:02:42,080 --> 00:02:42,913
‫Richiediamolo rapidamente qui.

47
00:02:45,700 --> 00:02:47,883
‫Va bene, e quindi, questo è ancora un altro molto semplice.

48
00:02:55,810 --> 00:03:00,550
‫Tutto quello che dobbiamo fare è app. utilizzare e quindi chiamare HPP.

49
00:03:00,550 --> 00:03:05,263
‫Quindi, prevenire l'inquinamento dei parametri.

50
00:03:06,710 --> 00:03:10,750
‫E questo dovrebbe essere usato di nuovo qui alla fine,

51
00:03:12,750 --> 00:03:15,910
‫ok, perché quello che fa è ripulire la

52
00:03:15,910 --> 00:03:18,120
‫stringa di query, ok?

53
00:03:18,120 --> 00:03:20,470
‫Quindi proviamo di nuovo.

54
00:03:20,470 --> 00:03:22,003
‫Ci vuole un po' di tempo, e ci siamo.

55
00:03:24,050 --> 00:03:26,690
‫Quindi l'errore è sparito e quindi ora sta

56
00:03:26,690 --> 00:03:28,080
‫usando solo l'ultimo.

57
00:03:28,080 --> 00:03:31,120
‫Quindi ora sta ordinando il mio prezzo e

58
00:03:31,120 --> 00:03:34,930
‫in effetti iniziamo con quello più basso e poi

59
00:03:34,930 --> 00:03:38,760
‫saliamo di 497, fino a quello più costoso di

60
00:03:38,760 --> 00:03:40,860
‫quasi 3000, va bene?

61
00:03:40,860 --> 00:03:44,423
‫Quindi è un po' risolto, ma in alcuni casi

62
00:03:45,380 --> 00:03:48,260
‫vogliamo alcune proprietà o campi duplicati, giusto?

63
00:03:48,260 --> 00:03:52,800
‫Ad esempio, potremmo voler cercare i tour con la

64
00:03:52,800 --> 00:03:55,690
‫durata di nove e cinque.

65
00:03:55,690 --> 00:03:57,913
‫Quindi ricorda che nella nostra API

66
00:04:01,690 --> 00:04:04,960
‫possiamo farlo, quindi la durata è uguale a cinque

67
00:04:04,960 --> 00:04:08,283
‫e possiamo dire, allo stesso tempo, la durata nove, ok?

68
00:04:09,670 --> 00:04:13,980
‫E vogliamo che funzioni davvero, ma in questo momento non è così.

69
00:04:13,980 --> 00:04:17,740
‫Trova solo il tour con nove giorni, giusto?

70
00:04:17,740 --> 00:04:22,010
‫Ma se non l'avessimo fatto, o il middleware HPP.

71
00:04:22,010 --> 00:04:24,823
‫Quindi disattiviamolo.

72
00:04:26,000 --> 00:04:28,253
‫Quindi se non lo avessimo attivo,

73
00:04:29,130 --> 00:04:31,130
‫allora troveremmo tre tour, uno

74
00:04:31,130 --> 00:04:35,130
‫con durata cinque, poi qui con durata nove e qui un

75
00:04:35,130 --> 00:04:37,000
‫altro con durata cinque.

76
00:04:37,000 --> 00:04:39,300
‫Ok, quindi in questo caso, questo è in

77
00:04:39,300 --> 00:04:40,930
‫realtà il comportamento previsto.

78
00:04:40,930 --> 00:04:43,890
‫Quindi cosa possiamo fare per essere in grado di

79
00:04:43,890 --> 00:04:45,800
‫utilizzare il middleware ma ottenere

80
00:04:45,800 --> 00:04:48,463
‫comunque questo risultato che ci aspettiamo qui,

81
00:04:48,463 --> 00:04:51,670
‫con la durata, possiamo inserire nella whitelist alcuni parametri, ok?

82
00:04:51,670 --> 00:04:55,770
‫Quindi, in questa funzione HPP, possiamo passare ancora

83
00:04:55,770 --> 00:05:00,770
‫una volta un oggetto e quindi specificare la lista bianca, ok?

84
00:05:01,050 --> 00:05:05,543
‫E la lista bianca è semplicemente un array di proprietà per

85
00:05:06,560 --> 00:05:10,690
‫le quali consentiamo effettivamente i duplicati nella stringa di query.

86
00:05:10,690 --> 00:05:14,213
‫Va bene?

87
00:05:15,990 --> 00:05:16,823
‫E la durata è ovviamente uno di questi, va bene?

88
00:05:16,823 --> 00:05:20,943
‫Quindi, proviamo di nuovo.

89
00:05:22,070 --> 00:05:23,543
‫E così, in questo momento otteniamo ancora i nostri tre risultati come prima.

90
00:05:26,292 --> 00:05:30,890
‫Ma se abbiamo provato con sort, creiamo una

91
00:05:30,890 --> 00:05:33,480
‫nuova scheda qui.

92
00:05:33,480 --> 00:05:35,483
‫Quindi, se lo provassimo con

93
00:05:40,990 --> 00:05:43,453
‫questi doppi ordinamenti, non dovremmo nemmeno ricevere errori.

94
00:05:44,350 --> 00:05:46,730
‫Bene, ora non sono stati registrati, quindi prendiamo il

95
00:05:46,730 --> 00:05:48,183
‫nostro token di errore qui.

96
00:05:49,295 --> 00:05:54,295
‫Riprova.

97
00:05:54,400 --> 00:05:55,650
‫E ora funziona davvero, non riceviamo errori.

98
00:05:55,650 --> 00:05:58,870
‫E così il middleware HPP sta facendo il suo lavoro.

99
00:05:58,870 --> 00:06:02,713
‫Va bene?

100
00:06:04,100 --> 00:06:05,680
‫Chiudi anche questo,

101
00:06:05,680 --> 00:06:09,110
‫e ora dovremmo anche specificare alcuni altri campi

102
00:06:09,110 --> 00:06:12,450
‫nella nostra lista bianca, perché ad esempio

103
00:06:12,450 --> 00:06:16,250
‫vogliamo cercare anche questo, o la quantità di valutazioni.

104
00:06:16,250 --> 00:06:18,130
‫E quindi copiamoli tutti qui nella nostra lista bianca.

105
00:06:18,130 --> 00:06:21,863
‫Quindi anche la media.

106
00:06:28,940 --> 00:06:30,423
‫Poi anche la durata

107
00:06:35,210 --> 00:06:38,700
‫che abbiamo già, e diciamo la dimensione massima del gruppo.

108
00:06:38,700 --> 00:06:40,403
‫Potremmo anche volere la difficoltà.

109
00:06:46,680 --> 00:06:48,983
‫E anche il prezzo.

110
00:06:54,920 --> 00:06:56,070
‫E penso che allora dovrebbe bastare.

111
00:06:56,070 --> 00:06:58,773
‫Va bene.

112
00:07:03,370 --> 00:07:04,223
‫E potrebbe sembrare

113
00:07:05,950 --> 00:07:09,540
‫un po' strano inserire manualmente tutti i nomi dei campi qui e in

114
00:07:09,540 --> 00:07:12,350
‫seguito potremmo dover fare la stessa cosa per le altre

115
00:07:12,350 --> 00:07:15,410
‫risorse, e questo renderà questa lista bianca ancora più grande, giusto?

116
00:07:15,410 --> 00:07:19,010
‫E ovviamente potremmo fare alcune cose complesse qui per

117
00:07:19,010 --> 00:07:21,860
‫ottenere questi nomi di campo dal modello

118
00:07:21,860 --> 00:07:23,930
‫stesso, ma ancora una

119
00:07:23,930 --> 00:07:26,690
‫volta, voglio solo mantenerlo semplice qui, ok?

120
00:07:26,690 --> 00:07:28,980
‫E quindi sto solo definendo manualmente questi

121
00:07:28,980 --> 00:07:32,160
‫nomi di campo qui e poi lo chiamerò un giorno, va bene?

122
00:07:32,160 --> 00:07:34,900
‫Ok, e questo in realtà

123
00:07:34,900 --> 00:07:38,620
‫conclude la nostra sezione di autenticazione, autorizzazione e sicurezza.

124
00:07:38,620 --> 00:07:41,590
‫E se vuoi divertirti un po' di più, allora

125
00:07:41,590 --> 00:07:44,620
‫puoi provare a implementare alcune delle cose che ho suggerito

126
00:07:44,620 --> 00:07:46,730
‫in quel video riassuntivo che ti

127
00:07:46,730 --> 00:07:49,213
‫ho mostrato prima con quella diapositiva con tutte

128
00:07:49,213 --> 00:07:51,260
‫queste diverse misure di sicurezza che

129
00:07:51,260 --> 00:07:53,160
‫abbiamo già implementato e alcuni

130
00:07:53,160 --> 00:07:55,530
‫dei quali ti ho detto di sperimentare.

131
00:07:55,530 --> 00:07:57,970
‫Quindi sentiti libero di farlo, o

132
00:07:57,970 --> 00:08:00,700
‫se no, allora passiamo insieme alla sezione

133
00:08:00,700 --> 00:08:04,330
‫successiva che sarà di nuovo davvero eccitante perché inizieremo

134
00:08:04,330 --> 00:08:06,750
‫davvero a modellare i

135
00:08:06,750 --> 00:08:09,800
‫dati e impareremo alcune cose MongoDB più avanzate.

136
00:08:09,800 --> 00:08:12,920
‫Quindi non vedo l'ora di vederti lì.

