首頁 > 後端開發 > php教程 > PHP 的 FILTER_SANITIZE_STRING 棄用:最佳替代選項是什麼?

PHP 的 FILTER_SANITIZE_STRING 棄用:最佳替代選項是什麼?

Linda Hamilton
發布: 2024-12-01 11:14:10
原創
273 人瀏覽過

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

FILTER_SANITIZE_STRING 棄用:混亂和意外後果的故事

最近棄用 FILTER_SANITIZE_STRING 和 FILTER_SANITIZE_STRSTRIPPED 進行常數開發人員的擔憂

不建議使用什麼以及為什麼?

FILTER_SANITIZE_STRING 和 FILTER_SANITIZE_STRIPPED 先前用於從輸入字串中刪除潛在的 XSS 漏洞。然而,這些過濾器表現出令人困惑和不直觀的行為。 FILTER_SANITIZE_STRING 刪除了「

PHP 社群確定這些過濾器造成的混亂比它們解決的問題還要多,因為開發人員經常誤解它們的預期用途。其他過濾器(例如 FILTER_UNSAFE_RAW)已充分處理輸入清理。

替換選項

有多種選項可以取代這些已棄用的內容filters:

  • FILTER_UNSAFE_RAW: 此預設字串過濾器不執行任何過濾。如果您想要不進行任何修改的原始字串值,請使用此函數。
  • htmlspecialchars(): 使用此函數對可被 XSS 漏洞利用的特殊字元進行編碼。但是,請記住將其應用於輸出,而不是輸入。
  • 自訂 Polyfill: 對於需要 FILTER_SANITIZE_STRING 和 FILTER_SANITIZE_STRIPPED 特定過濾行為的人,可以建立基於正規表示式的Polyfill作為如下:
function filter_string_polyfill(string $string): string
{
    $str = preg_replace('/\x00|<[^>]*>?/', '', $string);
    return str_replace([&quot;'&quot;, '&quot;'], ['&amp;#39;', '&amp;#34;'], $str);
}
登入後複製

記住黃金法則

重要的是要強調輸入清理不應被視為針對XSS 攻擊的可靠防禦。相反,開發人員應該專注於轉義輸出,以防止潛在危險的內容被注入到頁面中。

以上是PHP 的 FILTER_SANITIZE_STRING 棄用:最佳替代選項是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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