如何防止htmlspecialchar(PHP)转换字符串中的整数

How to prevent htmlspecialchars (PHP) to conver integer in string

本文关键字:字符串 整数 转换 何防止 htmlspecialchar PHP      更新时间:2023-09-26

我正在开发一个web应用程序,其中存储在数据库中的一些数据显示在div中。

由于这些数据来自用户,为了防止任何javascript注入,我想在构建网页之前,对从数据库中提取的每个值使用htmlspecialchar()函数。我使用以下函数来遍历从数据库中获得的数据数组。

function filter(&$arr) {
         foreach ($arr as $key => &$val) {
            if (is_array($val)){
                $this->filter($val);
            }else{
                $val=htmlspecialchars($val);
            }
         } 
     }

但是,当这个函数处理数据数组时,整数值会转换为字符串。

有没有办法阻止这种转换?

我更喜欢将整数作为整数,因为部分数据是由javascript详细描述的,如果数据是以字符串形式提供的,则部分代码无法正常工作。我正在寻找一个通用的解决方案,无论数据库中的数据类型如何,都可以应用。

您可以进行

} else if (!is_int($val)) {
    $val = htmlspecialchars($val);
}

这不会是一个安全风险,就好像它真的是一个int,它不能包含注入。。。