php - 使用 PDO 序列化数据是否危险

标签 php serialization pdo

我有 8 个输入类型文本。名称=favour_01

我将这 8 个输入放入一个数组中,然后将其序列化

我使用PDO将其保存到数据库中。

然后将其反序列化以进行输出

$favour[]='apple'; $favour[]='banana';

$favours = serialize($favours);

prepare(...

$food->bindValue(':favours', $favours, PDO::PARAM_STR);

这安全吗?我读过序列化输入很容易受到攻击。

我没有为此使用任何类,这是我读过的一篇文章 https://www.owasp.org/index.php/PHP_Object_Injection

最佳答案

仅当序列化的数据包含敏感信息时,序列化数据才会存在安全风险。风险在于您序列化包含密码的数据,然后将序列化的表单存储在不安全的地方。

反序列化如果您尝试对从不受信任的来源获取的数据进行反序列化,则数据会存在安全风险。反序列化过程可以实例化对象,因此数据输入可能会执行您意想不到的操作。

从安全角度来看,您正在执行的序列化简单值数组以将其绑定(bind)到 SQL 参数的操作是可以的,但请记住,您将无法有效地在数据库中搜索特定值那个序列化的数组。基本上你的数据库变成了一个黑匣子:你可以将整个数组塞进去,然后取出整个数组来反序列化它,但是你不能用 SQL 轻松地读取或写入数组的单个元素。

最好的做法是创建一个子表并在该表中每行存储一个元素。

关于php - 使用 PDO 序列化数据是否危险,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17253512/

相关文章:

javascript - 表单提交两次(ajax 和 jquery)

php - 将行内容与匹配列相加

使用 mtom 流式传输二进制数据的 wcf webservice 获取错误 "An error occurred while receiving the HTTP response ***"

c++ - 从文件中读取对象

java - 在android中读取和写入序列化对象

php - PDO 插入错误

php - 使用 php 从 MySql 获取一个整数

php - 具有 UNIQUE INDEX MySQL 和 NULL 列的重复行

php - 为什么我不能用 PDOException 捕获错误?

php - 查找数字或第二大数字