我目前正在收緊我的網站上的安全性,並且正在努力確保從PHP傳遞到HTML的每個值都被正確編碼。避免意外的double htmlspecialchars編碼?
當前,將值分配給模板將對其進行編碼,但是網站的某些部分是舊的並且不使用模板。
我改變了我用來輸出HTML來編碼所有值的函數的工作方式。這對覆蓋所有舊頁面非常有用,但是現在它會在模板值上導致雙重編碼。
我改變我用做編碼功能:
$textToEncode = htmlspecialchars_decode($szText);
return htmlspecialchars($textToEncode, ENT_COMPAT, 'ISO-8859-1');
這從我所看到的工作。通過首先對它進行解碼,它將始終確保它不會進行雙重編碼,並且我無法想到解碼未編碼字符串會導致問題的任何原因。這是一個好的解決方案嗎?
未編碼串:'「0類型呈現&字符「'。解碼會導致問題。 – Quentin
@Quentin拉梅d:如果我把它與解碼上,我得到'「類型和渲染和字符」'如果我用它關閉做到這一點,我得到'「類型&放大器;渲染&字符「'看起來我很長時間了。 – MatthewMcGovern