Melindungi Rentetan JavaScript untuk Pertanyaan SQL dalam NodeJS
Apabila menghantar rentetan yang disediakan pengguna ke NodeJS untuk sisipan pangkalan data SQL, adalah penting untuk menghalang SQL kelemahan suntikan. Pengendalian teks biasa mungkin mencukupi untuk data mudah seperti nama pengguna, tetapi alamat e-mel memerlukan penjagaan khas. Artikel ini meneroka penyelesaian untuk meningkatkan kemesraan SQL bagi rentetan JavaScript.
Meniru mysql_real_escape_string() MySQL
Fungsi PHP mysql_real_escape_string() membersihkan rentetan untuk penyisipan SQL yang selamat. Walau bagaimanapun, NodeJS tidak menawarkan setara asli secara asli. Untuk membetulkan perkara ini, fungsi tersuai boleh dilaksanakan untuk meniru fungsinya dengan melepaskan aksara yang bermasalah dalam pertanyaan SQL.
Kod berikut menyediakan fungsi mysql_real_escape_string() tersuai untuk JavaScript:
function mysql_real_escape_string(str) { return str.replace(/[\x08\x09\x1a\n\r"'\\%]/g, function(char) { switch (char) { case "": return "\0"; case "\x08": return "\b"; case "\x09": return "\t"; case "\x1a": return "\z"; case "\n": return "\n"; case "\r": return "\r"; case "\"": case "'": case "\": case "%": return "\"+char; default: return char; } }); }
Fungsi ini menggantikan aksara tertentu dengan rakan sejawatannya yang terlepas, menjadikan rentetan selamat untuk sisipan SQL. Ia juga memanjangkan skop aksara yang dilepaskan untuk memasukkan tab, ruang belakang dan '%', memastikan keserasian dengan pertanyaan LIKE.
Nota tentang Kesedaran Set Aksara
MySQL's mysql_real_escape_string () adalah set-set-aksara, tetapi fungsi tersuai yang disediakan di sini tidak mengambil kira watak set. Walau bagaimanapun, wataknya yang luas melarikan diri memastikan ia berfungsi dengan pasti dalam kebanyakan senario.
Bacaan Lanjut
Untuk mendapatkan maklumat lanjut dan perbincangan tentang pencegahan suntikan SQL, rujuk tapak web OWASP .
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memasukkan Rentetan JavaScript dengan Selamat ke dalam Pertanyaan SQL dalam Node.js untuk Mencegah Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!