﻿1
00:00:01,140 --> 00:00:04,000
‫Instruktur: Dalam kuliah ini mari kita terapkan

2
00:00:04,000 --> 00:00:06,120
‫pembatasan kecepatan untuk mencegah

3
00:00:06,120 --> 00:00:09,130
‫IP yang sama membuat terlalu banyak permintaan ke

4
00:00:09,130 --> 00:00:11,730
‫API kita dan itu akan membantu kita

5
00:00:11,730 --> 00:00:14,893
‫mencegah serangan seperti penolakan layanan, atau serangan brute force.

6
00:00:16,470 --> 00:00:19,230
‫Jadi, pembatas kecepatan itu akan diimplementasikan

7
00:00:19,230 --> 00:00:21,920
‫sebagai fungsi middleware global.

8
00:00:21,920 --> 00:00:24,830
‫Jadi, pada dasarnya, apa yang akan dilakukan oleh

9
00:00:24,830 --> 00:00:28,490
‫rate limiter, adalah menghitung jumlah permintaan yang datang dari satu

10
00:00:28,490 --> 00:00:30,249
‫IP dan kemudian, ketika

11
00:00:30,249 --> 00:00:32,970
‫ada terlalu banyak permintaan, blokir permintaan ini, oke?

12
00:00:32,970 --> 00:00:35,400
‫Jadi masuk akal untuk mengimplementasikannya di middleware

13
00:00:35,400 --> 00:00:39,901
‫global, jadi, kami melakukannya di app. js.

14
00:00:39,901 --> 00:00:43,410
‫Jadi, kita sudah lama tidak menggunakan yang ini, dan

15
00:00:43,410 --> 00:00:45,550
‫rate limiter yang akan

16
00:00:45,550 --> 00:00:49,430
‫kita gunakan adalah paket npm bernama Express Rate Limit.

17
00:00:49,430 --> 00:00:50,803
‫Jadi mari kita instal itu.

18
00:00:52,800 --> 00:00:57,800
‫npm saya express-rate-limit, oke.

19
00:01:01,770 --> 00:01:04,853
‫Dan kemudian, di sini di bagian atas

20
00:01:08,440 --> 00:01:12,430
‫aplikasi kita, sebut saja rateLimit dan kemudian memerlukan ekspres dan

21
00:01:13,329 --> 00:01:17,400
‫sebenarnya sudah ada di sini Jadi kode VS mengambil nama

22
00:01:17,400 --> 00:01:21,440
‫ini dari paket kami. berkas json.

23
00:01:21,440 --> 00:01:23,660
‫Oke, dan nama yang saya

24
00:01:23,660 --> 00:01:26,320
‫berikan di sini biasanya berasal dari dokumentasi.

25
00:01:26,320 --> 00:01:28,760
‫Jadi jika mereka melakukannya seperti ini

26
00:01:28,760 --> 00:01:32,340
‫di dokumentasi, maka itu cara yang saya ikuti juga.

27
00:01:32,340 --> 00:01:34,503
‫Oke, jadi sekarang mari kita gunakan

28
00:01:34,503 --> 00:01:37,990
‫middleware ini di atas middleware global kita, mari kita

29
00:01:37,990 --> 00:01:39,940
‫tulis di sini, global.

30
00:01:41,190 --> 00:01:44,693
‫Dan kita mulai dengan membuat pembatas.

31
00:01:48,520 --> 00:01:51,410
‫Jadi pembatas, dan kami melakukannya dengan

32
00:01:51,410 --> 00:01:55,260
‫memanggil fungsi rateLimit yang baru saja kami definisikan di sana.

33
00:01:55,260 --> 00:01:58,000
‫Jadi rateLimit adalah fungsi

34
00:01:58,000 --> 00:02:01,090
‫yang menerima objek opsi, oke?

35
00:02:01,090 --> 00:02:03,080
‫Dan di sini, pada dasarnya

36
00:02:03,080 --> 00:02:06,230
‫kita dapat menentukan berapa banyak permintaan per IP yang akan

37
00:02:06,230 --> 00:02:08,250
‫kita izinkan dalam jangka waktu tertentu.

38
00:02:08,250 --> 00:02:11,900
‫Jadi kita bisa menentukan properti max, yang

39
00:02:11,900 --> 00:02:16,200
‫akan saya set ke 100, dan kemudian juga

40
00:02:16,200 --> 00:02:19,070
‫jendelanya, jadi jendela waktunya, oke?

41
00:02:19,070 --> 00:02:21,260
‫Jadi yang ingin saya izinkan di sini pada

42
00:02:21,260 --> 00:02:23,380
‫dasarnya adalah, 100 permintaan per jam.

43
00:02:23,380 --> 00:02:27,360
‫Dan ini di sini sebenarnya disebut milidetik jendela.

44
00:02:27,360 --> 00:02:31,323
‫Oke, jadi kita ingin satu jam jadi

45
00:02:32,750 --> 00:02:37,720
‫60 menit, kali 60 untuk detik, kali 1.000 untuk milidetik.

46
00:02:37,720 --> 00:02:40,520
‫Baiklah, sekali lagi, yang akan dilakukan

47
00:02:40,520 --> 00:02:45,033
‫adalah mengizinkan 100 permintaan dari IP yang sama dalam satu jam.

48
00:02:45,890 --> 00:02:48,210
‫Oke, dan jika batas itu kemudian

49
00:02:48,210 --> 00:02:51,860
‫dilanggar oleh IP tertentu, mereka akan mendapatkan kembali pesan kesalahan.

50
00:02:51,860 --> 00:02:54,603
‫Dan di sini kita sekarang dapat menentukan pesan itu.

51
00:02:58,550 --> 00:03:02,543
‫Terlalu banyak permintaan dari IP ini, silakan

52
00:03:05,160 --> 00:03:10,160
‫coba lagi dalam satu jam, baiklah, jadi kami perlu

53
00:03:10,320 --> 00:03:12,540
‫menemukan keseimbangan yang

54
00:03:12,540 --> 00:03:14,980
‫paling cocok untuk aplikasi kami.

55
00:03:14,980 --> 00:03:16,900
‫Misalnya, jika Anda sedang membangun

56
00:03:16,900 --> 00:03:20,250
‫API, yang sangat membutuhkan banyak permintaan untuk satu IP, maka tentu

57
00:03:20,250 --> 00:03:22,780
‫saja jumlah ini di sini harus lebih besar.

58
00:03:22,780 --> 00:03:25,770
‫Jadi jangan hanya mengikuti secara membabi buta apa yang baru saja

59
00:03:25,770 --> 00:03:28,410
‫saya taruh di sini, tetapi benar-benar menyesuaikannya dengan aplikasi Anda

60
00:03:28,410 --> 00:03:30,100
‫sendiri sehingga Anda tidak membuatnya

61
00:03:30,100 --> 00:03:32,173
‫tidak dapat digunakan karena pembatas ini, oke?

62
00:03:33,660 --> 00:03:37,480
‫Bagaimanapun, pembatas ini sekarang di sini yang baru saja kita

63
00:03:37,480 --> 00:03:40,653
‫buat pada dasarnya adalah fungsi middleware, oke?

64
00:03:41,630 --> 00:03:44,320
‫Jadi, rateLimit adalah fungsi yang akan,

65
00:03:44,320 --> 00:03:47,470
‫berdasarkan objek kita, membuat fungsi middleware, yang sekarang

66
00:03:47,470 --> 00:03:52,223
‫dapat kita gunakan menggunakan app. gunakan seperti yang kita lakukan sebelumnya.

67
00:03:53,990 --> 00:03:56,490
‫Dan kita bisa melakukannya dengan sederhana seperti ini.

68
00:03:56,490 --> 00:03:58,450
‫Tapi yang sebenarnya kami inginkan

69
00:03:58,450 --> 00:04:00,713
‫adalah membatasi akses ke rute API kami.

70
00:04:01,810 --> 00:04:04,050
‫Jadi, kita dapat menentukannya di

71
00:04:04,050 --> 00:04:07,300
‫sini, ingat bahwa kita dapat melakukannya dengan middleware.

72
00:04:07,300 --> 00:04:10,720
‫Jadi, pada dasarnya kami ingin menerapkan pembatas ini

73
00:04:10,720 --> 00:04:13,370
‫hanya pada slash API, oke?

74
00:04:13,370 --> 00:04:15,700
‫Dan itu kemudian akan memengaruhi

75
00:04:15,700 --> 00:04:18,960
‫semua rute yang pada dasarnya dimulai dengan ini,

76
00:04:18,960 --> 00:04:21,615
‫aplikasi Anda jadi meneruskan slash API, bagus.

77
00:04:21,615 --> 00:04:25,140
‫Jadi mari kita kembali ke tab utama kita di sini.

78
00:04:25,140 --> 00:04:29,140
‫Simpan, dan sekarang mari kita coba ini dan mari kita

79
00:04:29,140 --> 00:04:31,330
‫lakukan di sini dengan yang

80
00:04:31,330 --> 00:04:35,850
‫paling sederhana, jadi dapatkan semua tur, lalu inilah hasil kami dan sekarang

81
00:04:35,850 --> 00:04:39,600
‫yang ingin saya tunjukkan adalah tajuk ini di sini.

82
00:04:39,600 --> 00:04:42,720
‫Jadi rate limiter kami

83
00:04:42,720 --> 00:04:47,720
‫membuat dua header ini jadi RateLimit-Limit, dan RateLimit-Remaining, oke?

84
00:04:47,910 --> 00:04:50,870
‫Jadi kita mulai dengan 100 seperti yang kita

85
00:04:50,870 --> 00:04:53,130
‫definisikan, dan sekarang kita punya

86
00:04:53,130 --> 00:04:56,666
‫sisa, 99, karena kita sudah melakukan satu permintaan, kan?

87
00:04:56,666 --> 00:05:00,000
‫Jadi apa yang terjadi jika kita melakukan satu sama lain?

88
00:05:00,000 --> 00:05:02,853
‫Mari kita lakukan dengan Get Tour, misalnya, dan

89
00:05:04,520 --> 00:05:06,550
‫tidak ada tur dengan

90
00:05:06,550 --> 00:05:08,890
‫ID itu, tetapi itu tidak masalah,

91
00:05:08,890 --> 00:05:12,660
‫yang penting di sini adalah yang tersisa sekarang menjadi 98.

92
00:05:12,660 --> 00:05:15,010
‫Dan jika kita mencobanya lagi, maka

93
00:05:15,010 --> 00:05:19,210
‫Anda akan melihat bahwa itu bahkan turun lebih jauh ke 97, oke?

94
00:05:19,210 --> 00:05:21,620
‫Dan sebenarnya di bawah sini, kami juga melakukan reset.

95
00:05:21,620 --> 00:05:25,990
‫Jadi pada dasarnya stempel waktu di mana itu disetel ulang, oke?

96
00:05:25,990 --> 00:05:28,833
‫Sehingga satu jam jendela yang kita tentukan sebelumnya.

97
00:05:29,760 --> 00:05:34,069
‫Oke, sekarang jika di antara ini aplikasi kita di-restart, jadi

98
00:05:34,069 --> 00:05:37,410
‫untuk melakukan itu saya akan menyimpannya.

99
00:05:37,410 --> 00:05:40,920
‫Mari kita lihat apa yang terjadi kemudian, oke, jadi

100
00:05:40,920 --> 00:05:43,200
‫saya mengirimnya lagi, dan sekarang

101
00:05:43,200 --> 00:05:45,910
‫kita kembali mulai dari awal pada dasarnya.

102
00:05:45,910 --> 00:05:49,440
‫Oke, jadi aplikasi kita tidak bisa mogok selama ini karena

103
00:05:49,440 --> 00:05:51,350
‫jika tidak, itu pada

104
00:05:51,350 --> 00:05:54,093
‫dasarnya akan mengatur ulang batas juga, oke?

105
00:05:55,260 --> 00:05:59,670
‫Sekarang, mari kita coba melihat pesan kesalahannya,

106
00:05:59,670 --> 00:06:04,670
‫jadi saya akan menurunkan maksimum ini menjadi hanya tiga, oke?

107
00:06:04,870 --> 00:06:09,370
‫Dan simpan di sini, kirim permintaan ini, dan di header kita, kita

108
00:06:09,370 --> 00:06:10,790
‫sekarang melihat kita

109
00:06:10,790 --> 00:06:14,610
‫hanya memiliki dua yang tersisa, mari kita coba yang lain

110
00:06:14,610 --> 00:06:18,190
‫dan sekarang tidak ada lagi yang tersisa, jadi ini

111
00:06:18,190 --> 00:06:21,180
‫mungkin yang terakhir, mari kita lihat tubuhnya,

112
00:06:21,180 --> 00:06:23,350
‫jadi kali ini, kita masih

113
00:06:23,350 --> 00:06:27,087
‫mendapat data, tetapi jika kami mencobanya lagi, kami mendapat kesalahan.

114
00:06:27,087 --> 00:06:29,113
‫Banyak sekali request dari IP ini.

115
00:06:29,113 --> 00:06:31,190
‫Dan kemudian secara otomatis

116
00:06:31,190 --> 00:06:36,190
‫akan mengatur kode status menjadi 429 yang berarti terlalu banyak permintaan.

117
00:06:36,190 --> 00:06:39,560
‫Oke, dan sekali lagi, ini akan membantu kita

118
00:06:39,560 --> 00:06:43,810
‫mencoba mencegah penolakan layanan dan juga serangan brute force di

119
00:06:43,810 --> 00:06:46,270
‫mana penyerang mencoba menebak

120
00:06:46,270 --> 00:06:48,877
‫kata sandi beberapa pengguna, pada dasarnya

121
00:06:48,877 --> 00:06:51,900
‫dengan menggunakan seperti namanya, brute force.

122
00:06:51,900 --> 00:06:54,644
‫Oke, jadi itu pembatasan API, cukup

123
00:06:54,644 --> 00:06:57,030
‫mudah diterapkan dengan paket Batas

124
00:06:57,030 --> 00:06:59,363
‫Tarif Ekspres ini.

