Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimanakah saya boleh menghuraikan JSON \"santai\" tanpa menggunakan eval dan mengekalkan keselamatan?

Bagaimanakah saya boleh menghuraikan JSON \"santai\" tanpa menggunakan eval dan mengekalkan keselamatan?

Barbara Streisand
Barbara Streisandasal
2024-10-31 00:11:30653semak imbas

How can I parse

Menghuraikan JSON "Relaxed" tanpa Mengubah Eval

Dalam usaha untuk memudahkan pengalaman penghuraian JSON yang lebih mesra pengguna, pembangun sering menggunakan kepada fungsi eval yang terkenal. Walau bagaimanapun, amalan ini menimbulkan kebimbangan tentang kelemahan keselamatan. Artikel ini meneroka pendekatan alternatif untuk menghuraikan JSON "santai" tanpa menjejaskan keselamatan, menyediakan penyelesaian yang memenuhi keperluan kemudahan dan keselamatan.

Isu:

Standard Kaedah penghuraian JSON, JSON.parse, mematuhi sintaks JSON yang betul, memerlukan kunci untuk disertakan dalam petikan. Walau bagaimanapun, dalam amalan, pembangun sering menemui data JSON dengan sintaks "santai", di mana kunci mungkin tidak dipetik. Ini menimbulkan cabaran untuk menghuraikan data sedemikian dengan selamat.

Penyelesaian:

Daripada menggunakan eval, yang melaksanakan kod secara sembarangan, kaedah yang lebih selamat dan sama berkesan melibatkan penggunaan ungkapan biasa untuk membersihkan data JSON. Teknik ini melibatkan penggantian kunci yang tidak disebut dengan padanan yang disebut dengan betul, membolehkan data berjaya dihuraikan oleh JSON.parse.

Proses Langkah demi Langkah:

  1. Sanitasi JSON:
    Gunakan ungkapan biasa untuk mengimbas data JSON untuk kunci yang tidak disebut. Untuk setiap kunci yang tidak disebut, gantikannya dengan rakan sejawatannya yang disebut.
  2. Nilai JSON yang Disanitasi:
    Setelah data dibersihkan, ia boleh dihantar ke JSON.parse untuk menghuraikannya dengan selamat ke dalam objek JavaScript.

Contoh Kod:

Pertimbangkan JSON "santai" berikut:

{muh: 2}

Untuk menghuraikan data ini menggunakan pendekatan disanitasi:

var badJson = "{muh: 2}";
var correctJson = badJson.replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, '"": ');
var resultObject = JSON.parse(correctJson);

Selepas proses sanitasi, pembolehubahJson yang betul akan mengandungi JSON yang sah:

{"muh": 2}

Yang kemudiannya boleh dihuraikan dengan selamat oleh JSON.parse, menghasilkan objek JavaScript yang diingini.

Kesimpulan:

Dengan menggunakan teknik sanitasi ini, pembangun boleh menghuraikan data JSON "santai" dengan selamat tanpa menggunakan eval. Pendekatan ini menyediakan penyelesaian praktikal yang memastikan kedua-dua integriti data dan pematuhan terhadap amalan pengaturcaraan yang selamat.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menghuraikan JSON \"santai\" tanpa menggunakan eval dan mengekalkan keselamatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn