php - PHP 对象序列化有多安全,跨页面传递是否安全? (使用 phpXMLrpc)

标签 php security odoo object-serialization

基本上这就是我正在做的:

我正在使用 PHPXMLRPC 与 Odoo 通信。

本质上,要为我需要发送的每个请求进行通信,都需要遵循以下结构:

//The database I wish to connect too
$msg->addParam(new xmlrpcval($this->dbname, "string"));

//The logged in user id
$msg->addParam(new xmlrpcval($this->userID, "int"));

//The logged in users password
$msg->addParam(new xmlrpcval($this->password, "string"));

//The model
$msg->addParam(new xmlrpcval("project.project", "string"));

//The method Im requesting to call
$msg->addParam(new xmlrpcval("read", "string")); 

//Query parameters
$msg->addParam(new xmlrpcval($id_list, "array")); 
$msg->addParam(new xmlrpcval($field_list, "array")); 

现在我写了一个类,在它的构造函数中将实例变量设置为传递给它的构造函数的值,即

class PHPClient{
   private $userName;
   private $password;
   private $dbname;
   private $server_url;
   private $userID;



public function __construct($server_url, $database, $user, $password)
{
    $this->server_url = $server_url;
    $this->dbname = $database;
    $this->userName = $user;
    $this->password = $password;
    $this->userID = False;


}

有时我希望在其他地方再次使用同一个对象,也许是在另一个页面中。与其要求用户再次有效地“登录”并再次输入他们的所有详细信息,然后不得不创建另一个对象,不如将 PHPClient 对象序列化并存储在 session 中,然后存储在我需要使用该对象的任何其他页面中是否足够安全?对象以验证用户是否已登录并具有足够的权限,然后反序列化该对象以执行任何进一步的 RPC 请求?

最佳答案

您可以安全地跨请求序列化。您甚至可以安全地将用户输入放入数据中,然后将其序列化。

但是,永远不要反序列化用户可能修改的数据。例如,永远不要反序列化 cookie 或表单负载,或其他服务器发送给您的任何内容。

所以是的,序列化以在 session 中存储数据是绝对安全的。

关于php - PHP 对象序列化有多安全,跨页面传递是否安全? (使用 phpXMLrpc),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29798347/

相关文章:

php - 使用php将图像保存到服务器

php - 从 Wordpress 媒体库获取单个特定图像

php - 在 Yii 中将当前日期加 1 个月

python - 用户 "odoo"的对等身份验证失败

odoo - Odoo 13 免费版中的精度舍入误差

postgresql - Openerp 7.0 错误数据库

php - 在 OpenBSD 的 Apache 服务器上运行 xinc

c# - 检索当前用户的 Active Directory 组

c - 格式化字符串攻击,%_$d 和 %d 的区别

security - 最佳实践-重新运行bash以附加到Docker运行实例