безопасность — Насколько безопасна сериализация объектов PHP и безопасно ли передавать по страницам? (Используя phpXMLrpc)

В основном это то, что я делаю:

Я использую 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 и сохранить его в сеансе, а затем на любых других страницах, где мне требуется это использовать? объект, чтобы убедиться, что пользователь вошел в систему и имеет достаточные разрешения, а затем десериализовать объект для выполнения любых дальнейших запросов RPC?

2

Решение

Вы можете безопасно сериализовать через запросы. Вы можете даже безопасно поместить пользовательский ввод в данные и затем сериализовать их.

Тем не мение, никогда десериализация данных, которые пользователь может изменить. Например, никогда не отменяйте сериализацию файла cookie или формы, а также всего, что отправляет вам другой сервер.

Так что да, это совершенно безопасно для сериализации для хранения данных в сеансе.

5

Другие решения

Я предполагаю, что вы обсуждаете хранение объектов в переменной% _SESSION. Эта переменная хранится на сервере, поэтому ее можно изменять только с сервера. Таким образом, сеанс так же безопасен, как и ваш сервер. Если пользователи могут войти на ваш сервер или заставить ваш сервер работать некорректно из-за ошибки приложения, сеанс не очень безопасен. В противном случае, это, вероятно, достаточно хорошо.

Чтобы конкретно ответить

Насколько безопасна сериализация объектов PHP

Сериализация совсем не безопасна. Это кодировка, а не шифрование данных. Любой может десериализовать, изменить и повторно сериализовать объекты. Так что сериализация не добавляет безопасности. Если сеанс недостаточно безопасен для вас, вам нужно добавить дополнительную безопасность.

2

По вопросам рекламы [email protected]