Rumah > pembangunan bahagian belakang > tutorial php > Penamatan FILTER_SANITIZE_STRING PHP: Apakah Pilihan Penggantian Terbaik?

Penamatan FILTER_SANITIZE_STRING PHP: Apakah Pilihan Penggantian Terbaik?

Linda Hamilton
Lepaskan: 2024-12-01 11:14:10
asal
273 orang telah melayarinya

PHP's FILTER_SANITIZE_STRING Deprecation: What Are the Best Replacement Options?

Pemberhentian FILTER_SANITIZE_STRING: Kisah Kekeliruan dan Akibat Yang Tidak Diingini

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:

  • FILTER_UNSAFE_RAW: Penapis rentetan lalai ini tidak melakukan sebarang penapisan. Gunakan ini jika anda mahukan nilai rentetan mentah tanpa sebarang pengubahsuaian.
  • htmlspecialchars(): Gunakan fungsi ini untuk mengekod aksara khas yang boleh dieksploitasi untuk kelemahan XSS. Walau bagaimanapun, ingat untuk menerapkannya pada output, bukan input.
  • Polyfill Tersuai: Bagi mereka yang memerlukan gelagat penapisan khusus FILTER_SANITIZE_STRING dan FILTER_SANITIZE_STRIPPED, polyfill berasaskan regex boleh dibuat sebagai berikut:
function filter_string_polyfill(string $string): string
{
    $str = preg_replace('/\x00|<[^>]*>?/', '', $string);
    return str_replace(["'", '"'], ['&#39;', '&#34;'], $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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan