Cara Mengendalikan Kesalahan Rentetan Pertanyaan di JavaScript
- 665
- 17
- Daryl Wilderman
Rentetan pertanyaan adalah cara untuk menyampaikan data antara halaman atau komponen aplikasi web yang berbeza. Mereka sering digunakan untuk lulus parameter ke pelayan atau menyimpan data dalam sejarah penyemak imbas. Walau bagaimanapun, rentetan pertanyaan juga boleh menjadi sumber kesilapan dan kelemahan keselamatan jika tidak ditangani dengan betul.
Dalam artikel ini, kami akan membincangkan cara menangani ralat rentetan pertanyaan dalam javascript.
1. Periksa parameter yang hilang
Salah satu ralat rentetan pertanyaan yang paling biasa adalah parameter yang hilang. Ini berlaku apabila parameter yang diperlukan tidak terdapat dalam rentetan pertanyaan, yang membawa kepada kesilapan apabila kod cuba mengakses parameter tersebut. Untuk menangani ralat ini, anda harus menyemak sama ada parameter yang diperlukan hadir dalam rentetan pertanyaan sebelum cuba menggunakannya. Anda boleh melakukan ini dengan menggunakan Indeks() kaedah atau ungkapan biasa untuk mencari parameter dalam rentetan pertanyaan.
Contoh:
const queryString = tetingkap.Lokasi.cari; const urlParams = urlSearchParams baru (queryString); jika (!urlparams.mempunyai ('userid')) konsol.Ralat ('Parameter UserID yang hilang');123456 | const queryString = tetingkap.Lokasi.carian; const urlParams = urlSearchParams baru (queryString); jika (!urlparams.mempunyai ('userid')) konsol.ralat ('parameter userid yang hilang'); |
Dalam contoh di atas, kami memeriksa sama ada ID Pengguna Parameter hadir dalam rentetan pertanyaan. Sekiranya tidak hadir, kami log mesej ralat ke konsol.
2. Mengesahkan input
Satu lagi ralat rentetan pertanyaan biasa adalah input tidak sah. Ini boleh berlaku apabila pengguna memasuki aksara atau nilai yang tidak sah dalam rentetan pertanyaan, seperti aksara khas atau serangan suntikan SQL. Untuk menangani ralat ini, anda harus mengesahkan input sebelum menggunakannya dalam kod anda.
Contoh:
const queryString = tetingkap.Lokasi.cari; const urlParams = urlSearchParams baru (queryString); const userid = urlParams.dapatkan ('userId'); jika (!/^[0-9]+$/.ujian (userId)) konsol.ralat ('parameter userid tidak sah');1234567 | const queryString = tetingkap.Lokasi.carian; const urlParams = urlsearchParams baru (queryString); const userId = urlParams.dapatkan ('userId'); jika (!/^[0-9]+$/.ujian (userId)) konsol.ralat ('parameter userid tidak sah'); |
Dalam contoh di atas, kami menggunakan ungkapan biasa untuk mengesahkan parameter userid. Kami memeriksa jika parameter hanya mengandungi nombor dan tiada watak lain. Sekiranya mengandungi aksara lain, kami log mesej ralat ke konsol.
3. Sanitize Input
Cara lain untuk mengendalikan ralat rentetan pertanyaan adalah untuk membersihkan input. Sanitizing bermaksud mengeluarkan atau melarikan diri watak yang boleh menyebabkan kesilapan atau kelemahan keselamatan, seperti tag HTML atau watak khas. Anda boleh menggunakan perpustakaan seperti dompurify atau validator.js untuk membersihkan input anda.
Contoh:
import dompurify dari 'dompurify'; const queryString = tetingkap.Lokasi.cari; const urlParams = urlSearchParams baru (queryString); mesej const = urlParams.dapatkan ('mesej'); const sanitizedMessage = dompurify.sanitize (mesej); konsol.log (sanitizedMessage);12345678 | Import dompurify dari 'dompurify'; const querystring = window.Lokasi.carian; const urlParams = urlsearchParams baru (querystring); const message = urlParams.dapatkan ('mesej'); const sanitizedMessage = dompurify.sanitize (mesej); konsol.log (sanitizedMessage); |
Dalam contoh di atas, kami menggunakan dompurify untuk membersihkan parameter mesej. Kami mengeluarkan sebarang tag HTML atau watak khas yang boleh menyebabkan kelemahan keselamatan.
4. Gunakan blok cuba
Akhir. Ini termasuk kesilapan seperti JSON yang tidak sah atau nilai yang tidak dijangka. Cuba blok penangkap membolehkan anda menangkap kesilapan ini dan mengendalikannya dengan anggun, tanpa merosakkan permohonan anda.
Contoh:
cuba const queryString = window.Lokasi.cari; const urlParams = urlSearchParams baru (queryString); data const = json.parse (urlParams.dapatkan ('data')); konsol.log (data); menangkap (ralat) konsol.Ralat ('Ralat parsing data JSON');123456789 | cuba const queryString = window.Lokasi.cari; const urlParams = urlSearchParams baru (queryString); data const = json.parse (urlParams.dapatkan ('data')); konsol.log (data); tangkapan (ralat) konsol.Ralat ('Ralat parsing data JSON'); |
Dalam contoh di atas, kami menggunakan blok percubaan untuk menangkap sebarang kesilapan yang mungkin berlaku apabila menghuraikan data JSON dari parameter data. Sekiranya ralat berlaku, kami log mesej ralat ke konsol.
Kesimpulan
Rentetan pertanyaan adalah alat yang berguna untuk lulus data antara komponen yang berbeza dari aplikasi web. Walau bagaimanapun, mereka juga boleh menjadi sumber kesilapan dan kelemahan keselamatan jika tidak ditangani dengan betul. Dengan mengikuti petua dan contoh
- « Dapatkan dan permintaan pos menggunakan python
- Mengamankan laman web anda menggunakan .Htaccess amalan terbaik »