Pemadanan Corak Literal dalam PostgreSQL Like Expressions for Unvalidated User Input
Apabila memadankan input pengguna dengan corak LIKE dalam PostgreSQL, adalah penting untuk melarikan diri aksara corak khas seperti "_" dan "%" untuk memastikan padanan literal. PostgreSQL memerlukan aksara ini untuk dipetik menggunakan garis miring ke belakang () atau aksara melarikan diri tersuai yang ditakrifkan dengan klausa ESCAPE.
Sebagai contoh, untuk memadankan "merompak" secara literal, anda perlu melepaskan sebarang input pengguna yang mengandungi garis bawah atau tanda peratus. Walau bagaimanapun, terdapat kemungkinan perangkap di sini: jika input pengguna anda juga mengandungi garis miring ke belakang, ia juga perlu dilepaskan. Ini boleh menjadi rumit dan membawa kepada pepijat.
Penyelesaian Sebelah Pelayan
Untuk mengendalikan perkara ini dengan elegan, anda boleh memanfaatkan fungsi replace() PostgreSQL untuk menggantikan aksara khas dengan aksaranya. versi melarikan diri. Pendekatan ini mempunyai beberapa kelebihan:
Sebagai contoh, untuk mencari "merompak" secara literal, anda boleh menggunakan pertanyaan berikut:
SELECT * FROM users WHERE name LIKE replace(replace(replace(,'^','^^'),'%','^%'),'_','^_') ||'%' ESCAPE '^'
Dalam pertanyaan ini:
Kesimpulan
Dengan menggunakan penggantian bahagian pelayan dan watak melarikan diri tersuai, anda boleh memastikan padanan corak literal dalam ungkapan SUKA PostgreSQL untuk input pengguna yang tidak sah. Pendekatan ini mantap, mengelakkan kelemahan suntikan dan memudahkan kod.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Padanan Corak Literal dalam Ungkapan SEPERTI PostgreSQL dengan Input Pengguna Tidak Sah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!