php - 避免意外的双 htmlspecialchars 编码?

标签 php html encoding

我目前正在加强我网站的安全性,我正在努力确保从 PHP 传递到 HTML 的每个值都经过正确编码。

目前,为模板赋值会对其进行编码,但是网站的某些部分是旧的并且不使用模板。

我更改了用于输出 HTML 的函数的工作方式以对所有值进行编码。这对于覆盖所有旧页面非常有效,但现在会导致模板值双重编码。

我改变了我用来做的编码函数:

$textToEncode = htmlspecialchars_decode($szText);
return htmlspecialchars($textToEncode, ENT_COMPAT, 'ISO-8859-1');

据我所知,这是有效的。通过首先对其进行解码,它将始终确保它不会进行双重编码,而且我想不出解码未编码的字符串会导致问题的任何原因。这是一个好的解决方案吗?

最佳答案

如果您查看手册,您会发现您正在寻找的是函数的最后一个参数 - $double_encode = false ,默认情况下为 true:

string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] 

因此:

htmlspecialchars($textToEncode, ENT_COMPAT, 'ISO-8859-1', false);

关于php - 避免意外的双 htmlspecialchars 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16646577/

相关文章:

php - 如何计算5天的总价(mysql)酒店预订系统

php - Docker 容器上的 Couchbase PHP SDK 2.6

javascript - 如何在失去焦点后立即验证字段

postgresql - Plone 4.0.4 和 Postgresql 编码

php - 如何获取(mysql_fetch_array)的摘要

php - WordPress数据库小部件侧边栏搜索: how to connect the html form, php搜索引擎和服务器上的数据库

java - 如何使用jsoup删除html文件开头的 header ?

jquery - 滚动到单个帖子

php - 如何转义由 PHP parse_ini_file 函数解析的文件中的特殊字符?

delphi - ARC : is there a memory leak in TNetEncoding. 获取Base64Encoding?