Pemberhentian FILTER_SANITIZE_STRING dan FILTER_SANITIZE_STRIPPED baru-baru ini telah menimbulkan kebimbangan di kalangan pembangun PHP yang menimbulkan kebimbangan di kalangan mereka. sanitasi.
Apakah yang Dihentikan dan Mengapa?
FILTER_SANITIZE_STRING dan FILTER_SANITIZE_STRIPPED sebelum ini digunakan untuk mengalih keluar potensi kelemahan XSS daripada rentetan input. Walau bagaimanapun, penapis ini mempamerkan tingkah laku yang mengelirukan dan tidak intuitif. FILTER_SANITIZE_STRING menanggalkan semua aksara antara '<' dan penghujung rentetan, mengalih keluar bait NUL dan mengekodkan petikan tunggal dan berganda.
Komuniti PHP menentukan bahawa penapis ini menyebabkan lebih banyak kekeliruan daripada yang mereka selesaikan, kerana pembangun sering salah faham penggunaan yang dimaksudkan. Pensanitasian input sudah dikendalikan dengan secukupnya oleh penapis lain, seperti FILTER_UNSAFE_RAW.
Pilihan Penggantian
Terdapat beberapa pilihan untuk menggantikan yang telah ditamatkan ini penapis:
function filter_string_polyfill(string $string): string { $str = preg_replace('/\x00|<[^>]*>?/', '', $string); return str_replace(["'", '"'], [''', '"'], $str); }Ingat Peraturan Emas
Adalah penting untuk menekankan bahawa sanitasi input tidak boleh dianggap sebagai pertahanan yang boleh dipercayai terhadap serangan XSS. Sebaliknya, pembangun harus menumpukan pada melepaskan output untuk mengelakkan kandungan yang berpotensi berbahaya daripada disuntik ke dalam halaman.
Atas ialah kandungan terperinci Penamatan FILTER_SANITIZE_STRING PHP: Apakah Pilihan Penggantian Terbaik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!