我有8 input type text. name=favour_01
我将这8个input
分为array
和serialize
我使用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
答案 0 :(得分:2)
当您序列化的数据包含敏感信息时,序列化数据只是一种安全风险。例如,您可能会序列化包含密码的数据,然后将序列化表单存储在不安全的地方。
如果您尝试反序列化从不受信任的来源获得的数据,则反序列化数据会带来安全风险。反序列化过程可以实例化对象,因此数据输入可能会执行您不期望的事情。
从安全的角度来看,您为序列化一个简单的值数组以将其绑定到SQL参数所做的工作是可以的,但请记住,您将无法有效地搜索数据库中的特定值那个序列化的数组。基本上你的数据库变成了一个黑盒子:你可以将整个数组填入其中,然后获取整个数组以反序列化它,但你不能用SQL轻松读取或写入数组的各个元素。
最好创建子表并在该表中每行存储一个元素。
答案 1 :(得分:2)
是的,如果您使用预准备语句,然后在从数据库中检索数据之前验证数据,然后输出到浏览器,则是安全的。