如果我要为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);
答案 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()
。毕竟,这是你要放入数据库的字符串。