Отказ от ответственности : я новичок в веб-разработке.
Сценарий : я создал приложение с использованием CodeIgniter, которое лучше всего описать как календарь событий,В приложении есть общая функция, которая позволяет вам делиться своим календарем событий с другим человеком.После входа в систему пользователь может перейти на общую страницу и выбрать из списка тех, кто поделился с ними своими календарями событий.В настоящее время, когда пользователь выбирает имя человека, который поделился с ним своим календарем событий, генерируется следующий URI:
http://example.com/folder/controller/method/id
Раздел id
представляет собой owner_id
в базе данныхпользователь, который поделился своим календарем с отдельным человеком.
Проблема : можно легко изменить раздел id
URL-адреса на другого пользователя owner_id
в базе данных.Это позволяет любому, кто делает это, получить доступ к календарю событий человека, который не разрешил совместное использование своего календаря событий.
Вопрос : Какими методами можно устранить этот пробел в безопасности?Пожалуйста, дайте мне знать, если есть что-то, что мне нужно предоставить, или объясните более четко.Заранее благодарим за ваше время и энергию.
Модель :
class Shares_model extends crud_model {
public function __construct()
{
parent::__construct();
$this->pk = 'id';
$this->table_name = 'shares';
}
public function get($shared_to_user_id)
{
$this->db->where('shared_to_id', $shared_to_user_id);
$ids = parent::get_all();
$users = array();
foreach ($ids as $id)
{
$users[$id->owner_id]['owner_id'] = $id->owner_id;
$users[$id->owner_id]['owner_first_name'] = $id->owner_first_name;
$users[$id->owner_id]['owner_last_name'] = $id->owner_last_name;
}
return $users;
}
}
Просмотр :
<div class="panel">
<h4>Shared Planners</h4>
<ol>
<?php foreach($sharers as $s): ?>
<li><a href="<?php echo base_url('user/shared/view/'.$s['owner_id']) ?>"><strong><?php echo $s['owner_first_name']." ".$s['owner_last_name'] ?></strong></a></li>
<?php endforeach; ?>
</ol>
</div>
Контроллер :
class Shared extends Common_Auth_Controller {
private $end_user;
public function __construct()
{
parent::__construct();
$this->end_user = $this->ion_auth->user()->row();
$data['end_user'] = $this->end_user;
$this->load->vars($data);
$this->load->model('events_model', 'events');
}
public function index()
{
$title['title'] = 'Shared';
$this->load->model('shares_model','shares');
$data['sharers'] = $this->shares->get($this->end_user->id);
$this->load->view('public/head_view', $title);
$this->load->view('user/header_view');
$this->load->view('user/shared_view', $data);
$this->load->view('user/footer_view');
}