使用PDO序列化数据是危险的

时间:2013-06-22 17:39:05

标签: php serialization pdo

我有8 input type text. name=favour_01

我将这8个input分为arrayserialize

我使用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

2 个答案:

答案 0 :(得分:2)

当您序列化的数据包含敏感信息时,序列化数据只是一种安全风险。例如,您可能会序列化包含密码的数据,然后将序列化表单存储在不安全的地方。

如果您尝试反序列化从不受信任的来源获得的数据,则

反序列化数据会带来安全风险。反序列化过程可以实例化对象,因此数据输入可能会执行您不期望的事情。

从安全的角度来看,您为序列化一个简单的值数组以将其绑定到SQL参数所做的工作是可以的,但请记住,您将无法有效地搜索数据库中的特定值那个序列化的数组。基本上你的数据库变成了一个黑盒子:你可以将整个数组填入其中,然后获取整个数组以反序列化它,但你不能用SQL轻松读取或写入数组的各个元素。

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

答案 1 :(得分:2)

是的,如果您使用预准备语句,然后在从数据库中检索数据之前验证数据,然后输出到浏览器,则是安全的。