免责声明:我是网络开发新手。CodeIgniter应用程序中的URL安全
场景:我已经构建了一个使用CodeIgniter的应用程序,最好将其描述为事件日历。应用程序中有一个共享功能,可让您与其他人共享您的活动日历。登录后,用户可以前往共享页面,并从已与其共享活动日历的用户列表中进行选择。目前,当用户选择谁分享了他们的活动日历与他们的人的名字,下面的URI产生:
http://example.com/folder/controller/method/id
的id
部分是在用户的数据库谁共享了该owner_id
他们与个人日历。
问题:很容易将URL的id
部分更改为数据库中另一个用户的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');
}
为什么要为您的活动/日历授权表...? – Peter 2012-01-20 09:02:09