Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menggantikan Penapis Sanitasi Rentetan PHP 8.1 (FILTER_SANITIZE_STRING dan FILTER_SANITIZE_STRIPPED)?

Bagaimana untuk Menggantikan Penapis Sanitasi Rentetan PHP 8.1 (FILTER_SANITIZE_STRING dan FILTER_SANITIZE_STRIPPED)?

DDD
DDDasal
2024-12-05 07:13:13519semak imbas

How to Replace Deprecated PHP 8.1 String Sanitization Filters (FILTER_SANITIZE_STRING and FILTER_SANITIZE_STRIPPED)?

Menggantikan Pemalar Penapis yang Tidak Digunapakai: FILTER_SANITIZE_STRING dan FILTER_SANITIZE_STRIPPED

Dengan PHP 8.1, penapis tetap FILTER_SANITIZE_PPING_STRING dan FILTER_SANITIZE_PPED. Ini telah mencetuskan kebimbangan dalam kalangan pembangun yang sebelum ini menggunakan penapis ini untuk pembersihan rentetan.

Sebab Penamatan

Pemalar penapis ini dianggap mengelirukan dan tidak jelas tujuannya. Kefungsian mereka bertindih dengan penapis rentetan lain, yang membawa kepada kekeliruan dan hasil yang tidak konsisten. Komuniti PHP memutuskan untuk menghentikan sokongan mereka.

Pilihan Penggantian

Terdapat beberapa pilihan yang tersedia untuk menggantikan penapis yang ditamatkan ini:

  • Gunakan FILTER_UNSAFE_RAW: Ini ialah penapis rentetan lalai yang tidak melakukan penapisan. Ia sesuai jika anda tidak memerlukan sebarang sanitasi khusus.
  • Gunakan htmlspecialchars() untuk Pencegahan XSS: Jika anda menggunakan FILTER_SANITIZE_STRING terutamanya untuk mengelakkan kelemahan XSS, gantikannya dengan htmlspecialchars(). Fungsi ini harus dipanggil pada output, bukan input, untuk memastikan perlindungan yang berkesan.
  • Buat Polyfill: Jika anda memerlukan gelagat tepat penapis yang ditamatkan, anda boleh membuat polyfill menggunakan ungkapan biasa.

Kod berikut menunjukkan fungsi polyfill untuk filter_string_polyfill:

function filter_string_polyfill(string $string): string
{
    $str = preg_replace('/\x00|<[^>]*>?/', '', $string);
    return str_replace([&quot;'&quot;, '&quot;'], ['&amp;#39;', '&amp;#34;'], $str);
}

Ingat, input sanitasi kurang berkesan daripada keluar keluar. Fokus pada pengekodan data yang berpotensi terdedah sebelum ia dipaparkan atau digunakan.

Atas ialah kandungan terperinci Bagaimana untuk Menggantikan Penapis Sanitasi Rentetan PHP 8.1 (FILTER_SANITIZE_STRING dan FILTER_SANITIZE_STRIPPED)?. 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