‫-: Dalam kuliah
‫ini, kita akan menggunakan dua paket lagi untuk meningkatkan keamanan aplikasi
‫kita, dan kali ini untuk melakukan sanitasi data.
‫Jadi, sanitasi data pada dasarnya berarti
‫membersihkan semua data yang
‫masuk ke dalam aplikasi dari kode berbahaya.
‫Jadi, kode yang mencoba menyerang aplikasi kita.
‫Dalam hal ini, kami mencoba bertahan dari dua serangan.
‫Jadi, mari kita tuliskan, dan kita
‫akan melakukannya, katakanlah, di sini setelah pengurai isi.
‫Middleware ini membaca data
‫menjadi request. body, dan baru
‫setelah itu kita benar-benar bisa membersihkan data itu, kan?
‫Ini adalah tempat yang sempurna untuk melakukan sanitasi data.
‫Jadi, kami akan melakukan sanitasi data terhadap
‫injeksi query NoSQL, dan juga sanitasi data
‫terhadap serangan skrip lintas situs.
‫Dan sekarang sebelum melakukan hal
‫lain, izinkan saya menunjukkan kepada Anda mengapa
‫sangat penting untuk bertahan melawan jenis serangan ini.
‫Kami sekarang akan mensimulasikan injeksi kueri NoSQL dan
‫saya harap Anda akan terkejut seperti saya ketika saya
‫pertama kali menemukan betapa kuatnya ini.
‫Sekarang mari menuju ke Tukang Pos di
‫sini, dan coba masuk sebagai
‫seseorang, bahkan tanpa mengetahui alamat email mereka.
‫Baiklah, jadi pada dasarnya, hanya dengan memberikan kata sandi, katakanlah yang
‫ini di sini, kita akan dapat masuk, tetapi
‫bahkan tanpa mengetahui alamat emailnya.
‫Sekali lagi, kita
‫akan melakukannya dengan mensimulasikan injeksi kueri NoSQL,
‫dan cara termudah untuk melakukannya adalah seperti ini.
‫Alih-alih menentukan email asli,
‫kami menentukan kueri ini, pada dasarnya.
‫Kami menggunakan MongoDB lebih besar dari
‫operator dan mengaturnya sama dengan tidak ada, oke?
‫Dan sekarang, apa yang terjadi?
‫Memang, kita sekarang login sebagai admin.
‫Jadi Anda lihat kami bahkan mendapatkan token akses kami.
‫Ya, kami sekarang benar-benar masuk, dan ini
‫benar-benar mengejutkan saya, oke?
‫Sekali lagi, tanpa mengetahui
‫alamat email, hanya kata sandi, kami dapat masuk.
‫Dan percayalah, tidak terlalu sulit
‫untuk menemukan sekumpulan kata sandi yang sangat populer yang
‫digunakan di setiap aplikasi.
‫Jadi, serangan semacam ini yang perlu kita lindungi.
‫Ini bekerja pada dasarnya karena ini akan selalu benar, jadi itu
‫sebenarnya - Anda juga melihatnya di Kompas.
‫Jadi saya menyalinnya, atau sebenarnya, mari kita salin semua ini.
‫Kemudian coba filter dengan hal yang sama persis ini.
‫Sekarang kita hanya kehilangan kurung kurawal,
‫tetapi sekarang kita benar-benar mendapatkan kueri yang valid.
‫Mari kita tekan Temukan, dan memang, ini mengembalikan semua pengguna.
‫Jadi pada dasarnya, semua pengguna cocok dengan kueri ini.
‫Sekali lagi, itu karena ini di sini selalu benar.
‫Itu kemudian akan memilih semua nama pengguna.
‫Injeksi kueri berbahaya di sini memungkinkan
‫kami untuk masuk hanya dengan mengetahui kata sandi ini, oke?
‫Jadi, untuk melindungi diri kita dari
‫ini, mari kita instal
‫middleware lain, dan yang ini disebut express-mongo-sanitize, dan karena kita di
‫sini, mari kita lanjutkan dan menginstal yang
‫lain yang akan kita perlukan,
‫tapi nanti dalam video ini, yang disebut hanya XSS.
‫Sebenarnya, itu tidak benar; itu disebut XSS_clean.
‫Kita harus melanjutkan dan menghapus yang lain.
‫Hapus instalan NPM XSS.
‫Mari kita lihat paket kami. json, dan memang itu hilang.
‫Sekali lagi, XSS_clean adalah salah satu yang ingin kita gunakan.
‫Bagaimanapun, pertama, mari kita
‫bicara tentang injeksi kueri NoSQL lagi.
‫Yang akan kita gunakan hanyalah - dan
‫tentu saja, kita harus
‫terlebih dahulu membutuhkannya, jadi const mongoSanitize equals membutuhkan express-mongo-sanitize.
‫Sekali lagi, VS Code di sini membantu saya, dan karena kita di sini,
‫mari kita juga membutuhkan yang berikutnya.
‫Variabel yang saya butuhkan
‫disebut XSS, dan kemudian nama modulnya adalah XSS_clean.
‫Jadi, sekarang mari kita gunakan mongoSanitize ini di sini - di sini.
‫MongoSanitize adalah fungsi yang akan kita panggil, yang kemudian
‫akan mengembalikan fungsi middleware, yang kemudian
‫dapat kita gunakan.
‫Ini cukup untuk mencegah kita dari
‫jenis serangan yang baru saja kita lihat sebelumnya.
‫Jadi, apa yang dilakukan middleware
‫ini adalah melihat badan permintaan, string kueri permintaan, dan
‫juga pada Permintaan. Params, dan
‫kemudian pada dasarnya
‫akan menyaring semua tanda dan
‫titik dolar, karena begitulah cara operator MongoDB ditulis.
‫Dengan menghapus itu, operator ini tidak
‫akan berfungsi lagi.
‫Jadi, mari kita coba lagi.
‫Sekali lagi, itu akan menghapus semua tanda dolar ini.
‫Jadi jika saya melakukan ini sekarang, maka
‫memang, kami mendapatkan kesalahan
‫ini, dan kami tidak dapat lagi menggunakan
‫trik ini di sini, serangan injeksi kueri ini, untuk masuk.
‫Jadi, itu memperbaiki masalah pertama, tetapi sekarang
‫mari kita gunakan middleware lain
‫yang juga baru saja kita perlukan sebelumnya.
‫Jadi, aplikasi. gunakan dan XSS, oke?
‫Ini kemudian akan membersihkan input
‫pengguna dari kode HTML berbahaya, pada dasarnya.
‫Bayangkan seorang penyerang akan mencoba memasukkan
‫beberapa kode HTML berbahaya
‫dengan beberapa kode JavaScript yang menyertainya.
‫Jika itu kemudian akan disuntikkan ke situs HTML kami,
‫itu benar-benar dapat membuat beberapa kerusakan.
‫Dengan menggunakan middleware ini, kami
‫mencegahnya pada dasarnya dengan mengonversi semua simbol HTML ini.
‫Seperti yang saya katakan sebelumnya, validasi Mongoose itu
‫sendiri sebenarnya sudah merupakan perlindungan yang sangat baik terhadap XSS, karena
‫itu tidak akan benar-benar mengizinkan
‫hal-hal gila masuk ke database kita, selama
‫kita menggunakannya dengan benar.
‫Kapan pun Anda bisa, cukup tambahkan beberapa validasi
‫ke skema Mongoose Anda, dan itu sebagian
‫besar akan melindungi Anda dari skrip lintas situs, setidaknya di sisi server.
‫Mari kita dengan cepat menguji middleware ini di sini juga.
‫Apa yang akan saya lakukan hanyalah membuat pengguna
‫baru, dan sebut saja "penguji" di sini atau semacamnya.
‫Kata sandinya benar, dan di sini,
‫dalam namanya, mari tambahkan beberapa kode HTML.
‫Jadi, div dengan id kode buruk.
‫Baiklah, mari kita coba sekarang.
‫Anda melihat bahwa modul XSS yang kami gunakan
‫sebenarnya mengubah simbol HTML ini di
‫sini, sebagian besar yang ini, menjadi entitas HTML ini di sini.
‫Ayo cepat hapus orang ini.
‫Kami tidak membutuhkan dia sama sekali. (Tertawa) Itu
‫adalah perlindungan kami yang cepat dan mudah terhadap
‫beberapa serangan ini menggunakan sanitasi data.
‫Juga ingat bahwa pustaka fungsi validator yang kita
‫gunakan sebelumnya juga memiliki beberapa
‫fungsi sanitasi yang keren di dalamnya.
‫Kami juga dapat secara manual membangun beberapa middleware menggunakan ini,
‫tetapi sekali lagi, itu
‫tidak terlalu diperlukan, karena Mongoose sudah menerapkan skema yang ketat.
‫Kemudian, jika menemukan sesuatu yang
‫aneh, itu akan membuat kesalahan, dan ya,
‫itu sudah menjadi perlindungan yang cukup bagus.
‫Jadi, kita benar-benar hampir selesai dengan bagian keamanan.
‫Yang perlu kita lakukan
‫di video selanjutnya adalah mencegah Polusi Parameter.