我目前正在加强我网站的安全性,并试图确保从 PHP 传递到 HTML 的每个值都正确编码。
目前,为模板分配值会对其进行编码,但是网站的某些部分是旧的并且不使用模板。
我更改了用于输出 HTML 以对所有值进行编码的函数的工作方式。这对于覆盖所有旧页面非常有效,但是现在它会导致对模板值进行双重编码。
我改变了我用来做的编码功能:
$textToEncode = htmlspecialchars_decode($szText);
return htmlspecialchars($textToEncode, ENT_COMPAT, 'ISO-8859-1');
从我所看到的情况来看,这已经奏效了。通过首先对其进行解码,它将始终确保它不会双重编码,而且我想不出解码未编码字符串会导致问题的任何原因。这是一个好的解决方案吗?