﻿1
00:00:01,004 --> 00:00:02,610
‫-: Dalam kuliah

2
00:00:02,610 --> 00:00:06,690
‫ini, kita akan menggunakan dua paket lagi untuk meningkatkan keamanan aplikasi

3
00:00:06,690 --> 00:00:09,823
‫kita, dan kali ini untuk melakukan sanitasi data.

4
00:00:11,290 --> 00:00:13,630
‫Jadi, sanitasi data pada dasarnya berarti

5
00:00:13,630 --> 00:00:15,560
‫membersihkan semua data yang

6
00:00:15,560 --> 00:00:18,313
‫masuk ke dalam aplikasi dari kode berbahaya.

7
00:00:19,228 --> 00:00:22,053
‫Jadi, kode yang mencoba menyerang aplikasi kita.

8
00:00:22,930 --> 00:00:26,660
‫Dalam hal ini, kami mencoba bertahan dari dua serangan.

9
00:00:26,660 --> 00:00:30,240
‫Jadi, mari kita tuliskan, dan kita

10
00:00:30,240 --> 00:00:34,073
‫akan melakukannya, katakanlah, di sini setelah pengurai isi.

11
00:00:35,039 --> 00:00:37,400
‫Middleware ini membaca data

12
00:00:37,400 --> 00:00:40,140
‫menjadi request. body, dan baru

13
00:00:40,140 --> 00:00:42,890
‫setelah itu kita benar-benar bisa membersihkan data itu, kan?

14
00:00:42,890 --> 00:00:46,860
‫Ini adalah tempat yang sempurna untuk melakukan sanitasi data.

15
00:00:46,860 --> 00:00:51,860
‫Jadi, kami akan melakukan sanitasi data terhadap

16
00:00:55,190 --> 00:01:00,190
‫injeksi query NoSQL, dan juga sanitasi data

17
00:01:05,620 --> 00:01:09,560
‫terhadap serangan skrip lintas situs.

18
00:01:09,560 --> 00:01:11,670
‫Dan sekarang sebelum melakukan hal

19
00:01:11,670 --> 00:01:14,600
‫lain, izinkan saya menunjukkan kepada Anda mengapa

20
00:01:14,600 --> 00:01:17,733
‫sangat penting untuk bertahan melawan jenis serangan ini.

21
00:01:19,010 --> 00:01:22,200
‫Kami sekarang akan mensimulasikan injeksi kueri NoSQL dan

22
00:01:22,200 --> 00:01:25,620
‫saya harap Anda akan terkejut seperti saya ketika saya

23
00:01:25,620 --> 00:01:28,263
‫pertama kali menemukan betapa kuatnya ini.

24
00:01:29,820 --> 00:01:32,570
‫Sekarang mari menuju ke Tukang Pos di

25
00:01:32,570 --> 00:01:34,810
‫sini, dan coba masuk sebagai

26
00:01:34,810 --> 00:01:37,400
‫seseorang, bahkan tanpa mengetahui alamat email mereka.

27
00:01:37,400 --> 00:01:41,853
‫Baiklah, jadi pada dasarnya, hanya dengan memberikan kata sandi, katakanlah yang

28
00:01:42,800 --> 00:01:46,070
‫ini di sini, kita akan dapat masuk, tetapi

29
00:01:46,070 --> 00:01:48,603
‫bahkan tanpa mengetahui alamat emailnya.

30
00:01:49,750 --> 00:01:51,310
‫Sekali lagi, kita

31
00:01:51,310 --> 00:01:54,480
‫akan melakukannya dengan mensimulasikan injeksi kueri NoSQL,

32
00:01:54,480 --> 00:01:57,840
‫dan cara termudah untuk melakukannya adalah seperti ini.

33
00:01:57,840 --> 00:02:00,530
‫Alih-alih menentukan email asli,

34
00:02:00,530 --> 00:02:03,933
‫kami menentukan kueri ini, pada dasarnya.

35
00:02:06,450 --> 00:02:10,010
‫Kami menggunakan MongoDB lebih besar dari

36
00:02:10,010 --> 00:02:13,770
‫operator dan mengaturnya sama dengan tidak ada, oke?

37
00:02:13,770 --> 00:02:15,963
‫Dan sekarang, apa yang terjadi?

38
00:02:17,810 --> 00:02:21,810
‫Memang, kita sekarang login sebagai admin.

39
00:02:21,810 --> 00:02:24,673
‫Jadi Anda lihat kami bahkan mendapatkan token akses kami.

40
00:02:25,590 --> 00:02:28,550
‫Ya, kami sekarang benar-benar masuk, dan ini

41
00:02:28,550 --> 00:02:30,873
‫benar-benar mengejutkan saya, oke?

42
00:02:31,870 --> 00:02:33,940
‫Sekali lagi, tanpa mengetahui

43
00:02:33,940 --> 00:02:37,390
‫alamat email, hanya kata sandi, kami dapat masuk.

44
00:02:37,390 --> 00:02:39,540
‫Dan percayalah, tidak terlalu sulit

45
00:02:39,540 --> 00:02:42,840
‫untuk menemukan sekumpulan kata sandi yang sangat populer yang

46
00:02:42,840 --> 00:02:44,693
‫digunakan di setiap aplikasi.

47
00:02:46,198 --> 00:02:49,203
‫Jadi, serangan semacam ini yang perlu kita lindungi.

48
00:02:50,670 --> 00:02:54,913
‫Ini bekerja pada dasarnya karena ini akan selalu benar, jadi itu

49
00:02:55,940 --> 00:02:58,840
‫sebenarnya - Anda juga melihatnya di Kompas.

50
00:02:58,840 --> 00:03:01,590
‫Jadi saya menyalinnya, atau sebenarnya, mari kita salin semua ini.

51
00:03:05,130 --> 00:03:08,313
‫Kemudian coba filter dengan hal yang sama persis ini.

52
00:03:09,460 --> 00:03:12,660
‫Sekarang kita hanya kehilangan kurung kurawal,

53
00:03:12,660 --> 00:03:15,870
‫tetapi sekarang kita benar-benar mendapatkan kueri yang valid.

54
00:03:15,870 --> 00:03:20,440
‫Mari kita tekan Temukan, dan memang, ini mengembalikan semua pengguna.

55
00:03:20,440 --> 00:03:24,033
‫Jadi pada dasarnya, semua pengguna cocok dengan kueri ini.

56
00:03:25,340 --> 00:03:28,540
‫Sekali lagi, itu karena ini di sini selalu benar.

57
00:03:28,540 --> 00:03:31,503
‫Itu kemudian akan memilih semua nama pengguna.

58
00:03:33,330 --> 00:03:36,340
‫Injeksi kueri berbahaya di sini memungkinkan

59
00:03:36,340 --> 00:03:40,760
‫kami untuk masuk hanya dengan mengetahui kata sandi ini, oke?

60
00:03:40,760 --> 00:03:43,510
‫Jadi, untuk melindungi diri kita dari

61
00:03:43,510 --> 00:03:45,623
‫ini, mari kita instal

62
00:03:48,560 --> 00:03:52,953
‫middleware lain, dan yang ini disebut express-mongo-sanitize, dan karena kita di

63
00:03:59,680 --> 00:04:02,610
‫sini, mari kita lanjutkan dan menginstal yang

64
00:04:02,610 --> 00:04:04,900
‫lain yang akan kita perlukan,

65
00:04:04,900 --> 00:04:08,873
‫tapi nanti dalam video ini, yang disebut hanya XSS.

66
00:04:10,486 --> 00:04:14,603
‫Sebenarnya, itu tidak benar; itu disebut XSS_clean.

67
00:04:18,530 --> 00:04:22,760
‫Kita harus melanjutkan dan menghapus yang lain.

68
00:04:22,760 --> 00:04:24,700
‫Hapus instalan NPM XSS.

69
00:04:29,308 --> 00:04:34,308
‫Mari kita lihat paket kami. json, dan memang itu hilang.

70
00:04:35,280 --> 00:04:38,743
‫Sekali lagi, XSS_clean adalah salah satu yang ingin kita gunakan.

71
00:04:42,150 --> 00:04:43,840
‫Bagaimanapun, pertama, mari kita

72
00:04:43,840 --> 00:04:45,923
‫bicara tentang injeksi kueri NoSQL lagi.

73
00:04:48,040 --> 00:04:51,730
‫Yang akan kita gunakan hanyalah - dan

74
00:04:51,730 --> 00:04:54,343
‫tentu saja, kita harus

75
00:04:57,862 --> 00:05:02,695
‫terlebih dahulu membutuhkannya, jadi const mongoSanitize equals membutuhkan express-mongo-sanitize.

76
00:05:08,610 --> 00:05:12,790
‫Sekali lagi, VS Code di sini membantu saya, dan karena kita di sini,

77
00:05:12,790 --> 00:05:14,853
‫mari kita juga membutuhkan yang berikutnya.

78
00:05:16,120 --> 00:05:18,763
‫Variabel yang saya butuhkan

79
00:05:20,000 --> 00:05:23,947
‫disebut XSS, dan kemudian nama modulnya adalah XSS_clean.

80
00:05:27,160 --> 00:05:32,103
‫Jadi, sekarang mari kita gunakan mongoSanitize ini di sini - di sini.

81
00:05:33,490 --> 00:05:36,450
‫MongoSanitize adalah fungsi yang akan kita panggil, yang kemudian

82
00:05:36,450 --> 00:05:38,700
‫akan mengembalikan fungsi middleware, yang kemudian

83
00:05:38,700 --> 00:05:40,110
‫dapat kita gunakan.

84
00:05:40,110 --> 00:05:42,330
‫Ini cukup untuk mencegah kita dari

85
00:05:42,330 --> 00:05:44,820
‫jenis serangan yang baru saja kita lihat sebelumnya.

86
00:05:44,820 --> 00:05:46,610
‫Jadi, apa yang dilakukan middleware

87
00:05:46,610 --> 00:05:49,900
‫ini adalah melihat badan permintaan, string kueri permintaan, dan

88
00:05:49,900 --> 00:05:52,640
‫juga pada Permintaan. Params, dan

89
00:05:52,640 --> 00:05:54,190
‫kemudian pada dasarnya

90
00:05:54,190 --> 00:05:56,363
‫akan menyaring semua tanda dan

91
00:05:57,410 --> 00:06:00,730
‫titik dolar, karena begitulah cara operator MongoDB ditulis.

92
00:06:00,730 --> 00:06:03,140
‫Dengan menghapus itu, operator ini tidak

93
00:06:03,140 --> 00:06:04,833
‫akan berfungsi lagi.

94
00:06:05,830 --> 00:06:07,123
‫Jadi, mari kita coba lagi.

95
00:06:08,100 --> 00:06:12,003
‫Sekali lagi, itu akan menghapus semua tanda dolar ini.

96
00:06:13,712 --> 00:06:16,080
‫Jadi jika saya melakukan ini sekarang, maka

97
00:06:16,080 --> 00:06:17,930
‫memang, kami mendapatkan kesalahan

98
00:06:17,930 --> 00:06:20,270
‫ini, dan kami tidak dapat lagi menggunakan

99
00:06:20,270 --> 00:06:23,900
‫trik ini di sini, serangan injeksi kueri ini, untuk masuk.

100
00:06:23,900 --> 00:06:26,720
‫Jadi, itu memperbaiki masalah pertama, tetapi sekarang

101
00:06:26,720 --> 00:06:28,960
‫mari kita gunakan middleware lain

102
00:06:28,960 --> 00:06:31,700
‫yang juga baru saja kita perlukan sebelumnya.

103
00:06:31,700 --> 00:06:36,700
‫Jadi, aplikasi. gunakan dan XSS, oke?

104
00:06:37,590 --> 00:06:39,870
‫Ini kemudian akan membersihkan input

105
00:06:39,870 --> 00:06:42,283
‫pengguna dari kode HTML berbahaya, pada dasarnya.

106
00:06:43,210 --> 00:06:45,780
‫Bayangkan seorang penyerang akan mencoba memasukkan

107
00:06:45,780 --> 00:06:48,180
‫beberapa kode HTML berbahaya

108
00:06:48,180 --> 00:06:50,620
‫dengan beberapa kode JavaScript yang menyertainya.

109
00:06:50,620 --> 00:06:54,090
‫Jika itu kemudian akan disuntikkan ke situs HTML kami,

110
00:06:54,090 --> 00:06:56,423
‫itu benar-benar dapat membuat beberapa kerusakan.

111
00:06:57,300 --> 00:06:59,710
‫Dengan menggunakan middleware ini, kami

112
00:06:59,710 --> 00:07:03,063
‫mencegahnya pada dasarnya dengan mengonversi semua simbol HTML ini.

113
00:07:04,380 --> 00:07:07,040
‫Seperti yang saya katakan sebelumnya, validasi Mongoose itu

114
00:07:07,040 --> 00:07:10,937
‫sendiri sebenarnya sudah merupakan perlindungan yang sangat baik terhadap XSS, karena

115
00:07:12,230 --> 00:07:14,170
‫itu tidak akan benar-benar mengizinkan

116
00:07:14,170 --> 00:07:16,730
‫hal-hal gila masuk ke database kita, selama

117
00:07:16,730 --> 00:07:18,613
‫kita menggunakannya dengan benar.

118
00:07:19,480 --> 00:07:22,320
‫Kapan pun Anda bisa, cukup tambahkan beberapa validasi

119
00:07:22,320 --> 00:07:25,037
‫ke skema Mongoose Anda, dan itu sebagian

120
00:07:25,037 --> 00:07:29,290
‫besar akan melindungi Anda dari skrip lintas situs, setidaknya di sisi server.

121
00:07:29,290 --> 00:07:33,083
‫Mari kita dengan cepat menguji middleware ini di sini juga.

122
00:07:34,990 --> 00:07:38,333
‫Apa yang akan saya lakukan hanyalah membuat pengguna

123
00:07:39,960 --> 00:07:43,573
‫baru, dan sebut saja "penguji" di sini atau semacamnya.

124
00:07:44,500 --> 00:07:47,420
‫Kata sandinya benar, dan di sini,

125
00:07:47,420 --> 00:07:50,403
‫dalam namanya, mari tambahkan beberapa kode HTML.

126
00:07:51,480 --> 00:07:56,480
‫Jadi, div dengan id kode buruk.

127
00:08:00,470 --> 00:08:02,503
‫Baiklah, mari kita coba sekarang.

128
00:08:06,790 --> 00:08:10,310
‫Anda melihat bahwa modul XSS yang kami gunakan

129
00:08:10,310 --> 00:08:13,263
‫sebenarnya mengubah simbol HTML ini di

130
00:08:14,190 --> 00:08:19,163
‫sini, sebagian besar yang ini, menjadi entitas HTML ini di sini.

131
00:08:21,440 --> 00:08:24,130
‫Ayo cepat hapus orang ini.

132
00:08:24,130 --> 00:08:27,593
‫Kami tidak membutuhkan dia sama sekali. (Tertawa) Itu

133
00:08:29,556 --> 00:08:33,300
‫adalah perlindungan kami yang cepat dan mudah terhadap

134
00:08:33,300 --> 00:08:36,293
‫beberapa serangan ini menggunakan sanitasi data.

135
00:08:37,280 --> 00:08:40,460
‫Juga ingat bahwa pustaka fungsi validator yang kita

136
00:08:40,460 --> 00:08:42,770
‫gunakan sebelumnya juga memiliki beberapa

137
00:08:42,770 --> 00:08:45,123
‫fungsi sanitasi yang keren di dalamnya.

138
00:08:45,980 --> 00:08:49,820
‫Kami juga dapat secara manual membangun beberapa middleware menggunakan ini,

139
00:08:49,820 --> 00:08:51,820
‫tetapi sekali lagi, itu

140
00:08:51,820 --> 00:08:55,890
‫tidak terlalu diperlukan, karena Mongoose sudah menerapkan skema yang ketat.

141
00:08:55,890 --> 00:08:58,250
‫Kemudian, jika menemukan sesuatu yang

142
00:08:58,250 --> 00:09:00,870
‫aneh, itu akan membuat kesalahan, dan ya,

143
00:09:00,870 --> 00:09:03,290
‫itu sudah menjadi perlindungan yang cukup bagus.

144
00:09:03,290 --> 00:09:06,240
‫Jadi, kita benar-benar hampir selesai dengan bagian keamanan.

145
00:09:06,240 --> 00:09:07,740
‫Yang perlu kita lakukan

146
00:09:07,740 --> 00:09:10,163
‫di video selanjutnya adalah mencegah Polusi Parameter.

