【问题标题】:Is PHP Serialized Object Data Clean For Mysql Injection?PHP 序列化对象数据是否适合 Mysql 注入?
【发布时间】:2010-06-30 23:20:16
【问题描述】:

如果我为 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);

【问题讨论】:

  • FWIW,“很多”中不应该有撇号,所以无论如何它是安全的。 (开个玩笑!)
  • @Bill 哈哈。那真好笑。我想不出要写什么。所以,你抓住了我;)

标签: php mysql serialization


【解决方案1】:

是的,您必须对其进行转义(或使用准备好的语句)。

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

产量

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

如您所见,没有转义。

附带说明,您应该为新代码使用 mysqli 扩展名,而不是 mysql 扩展名。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 始终在输入时运行 mysql_real_escape_string,或者更好的是,使用准备好的语句。你养成的习惯越多越好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 2012-06-05
    • 2012-04-15
    • 2011-04-03
    相关资源
    最近更新 更多