首頁 > 後端開發 > php教程 > 如何替換已棄用的 PHP 8.1 字串清理過濾器(FILTER_SANITIZE_STRING 和 FILTER_SANITIZE_STRIPPED)?

如何替換已棄用的 PHP 8.1 字串清理過濾器(FILTER_SANITIZE_STRING 和 FILTER_SANITIZE_STRIPPED)?

DDD
發布: 2024-12-05 07:13:13
原創
519 人瀏覽過

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

取代已棄用的過濾器常數:FILTER_SANITIZE_STRING 和 FILTER_SANITIZE_STRIPPED

在 PHP 8.1 中,常數和FILTER_SANITIZE_STRIPPED 已被棄用。這引起了以前使用這些過濾器進行字串清理的開發人員的擔憂。

棄用的原因

這些過濾器常數被認為令人困惑且其用途不明確。它們的功能與其他字串過濾器重疊,導致混亂和不一致的結果。 PHP 社群決定停止支持。

替換選項

有多個選項可用於取代這些已棄用的過濾器:

  • 使用FILTER_UNNSAFE_RAW: 這是預設的字串過濾器,不執行任何過濾。如果您不需要任何特定的清理,它是合適的。
  • 使用 htmlspecialchars() 進行 XSS 預防:如果您使用 FILTER_SANITIZE_STRING 主要是為了防止 XSS 漏洞,請將其替換為 htmlspecialchars()。應在輸出而不是輸入上呼叫此函數,以確保有效保護。
  • 建立一個 Polyfill: 如果您需要已棄用過濾器的確切行為,您可以建立一個 Polyfill使用正規表示式。
以下程式碼示範了一個 polyfill 函數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);
}
登入後複製
請記住,清理輸入不如轉義輸出有效。在顯示或使用潛在易受攻擊的資料之前,請專注於對其進行編碼。

以上是如何替換已棄用的 PHP 8.1 字串清理過濾器(FILTER_SANITIZE_STRING 和 FILTER_SANITIZE_STRIPPED)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板