Я испытываю странное поведение в своем приложении cakePHP.У меня есть следующее в какой-то системе голосования:
$user_id = ($this->Session->check('User')) ? $this->Session->read('User.id') : 0;
$data = array(
'id' => NULL,
'user_id' => $user_id,
'object_id' => $this->params['form']['object_id'],
'datetime' => date('Y-m-d H:i:s')
);
$this->Votes->create();
$this->Votes->save($data);
Как вы можете видеть, если $_SESSION['User']
не установлено, user_id
будет равно нулю (0).В противном случае это будет идентификатор пользователя.Сеанс пользователя создается, когда пользователь входит в систему.
Это позволяет незарегистрированным пользователям также голосовать, что нормально.
Проблема в ... Каким-то образомгруппа голосов с user_id != 0
(т.е. предположительно существующими и зарегистрированными участниками) была сохранена.Когда я проверил идентификаторы пользователей, их нет в таблице пользователей.
Это похоже на то, как кто-то отправил голоса со случайными идентификаторами пользователя.Идентификаторы, которые даже не существуют!
Важно отметить, что:
- идентификатор пользователя не приходит ни от какого пользовательского ввода.Это читается из сеанса;
- нет связи между голосами и пользователями.Таблицы находятся в двух разных базах данных, и для этой цели им не нужно никаких отношений
Кто-нибудь знает, если я что-то здесь упускаю?Я предполагаю, что вещи не так?Как кто-то может подделать идентификатор пользователя, в этом случае идентификатор, который не существует?