用于Mysql注入的PHP序列化对象数据是否干净?

时间:2010-06-30 23:20:16

标签: php mysql serialization

如果我要为mysql注入序列化,是否需要转义对象数据?

即:

class Object
{
   public $description;
}

$obj = new Object();
$obj->description = mysql_real_escape_string("this is my crazy string with lot's of bad // characters");

$data = serialize($obj); // <-- $data will be stored in DB

或者这样就足够了:

class Object
{
   public $description;
}

$obj = new Object();
$obj->description = "this is my crazy string with lot's of bad // characters";

$data = serialize($obj);

2 个答案:

答案 0 :(得分:3)

是的,你必须逃避它(或使用准备好的陈述)。

<?php
$obj = (object) array("--'--'" => "--'--");
var_dump(serialize($obj));

产量

string(44) "O:8:"stdClass":1:{s:6:"--'--'";s:5:"--'--";}"

如你所见,没有逃脱。

另外,您应该使用mysqli扩展名来获取新代码,而不是mysql扩展名。

答案 1 :(得分:2)

序列化后运行mysql_real_escape_string()。毕竟,这是你要放入数据库的字符串。