我有一个cakephp 1.3应用程序,我遇到了“数据泄漏”安全漏洞。我正在寻找使用蛋糕的最佳解决方案,而不仅仅是可以工作的东西。该应用程序是一个成绩跟踪系统,可让教师输入成绩,学生可以检索成绩。一切都按预期工作,但是当我开始审计安全性时,我发现基本的CRUD操作有泄漏。这意味着学生X可以看到学生Y的成绩。学生只能看到自己的成绩。我将把这个问题限制在读操作中。cakePHP和CRUD操作授权
使用的蛋糕,我有这个观点功能的grade_controller.php文件:
function view($id = null) {
// Extra, not related code removed
$this->set('grade', $this->grade->read(null, $id));
}
而且
http://localhost/grade/view/5
显示了学生的$ id = 5的档次。那很棒。但是,如果学生#5操纵网址并将其更改为6,则会显示6号人的成绩。经典的数据泄露安全漏洞。
我有两个想法来解决这个问题的最佳方法。 1)我可以将检查添加到控制器中调用的每个CRUD操作。或者2)向模型添加代码(例如使用beforeFind())来检查人员X是否有权访问该数据元素。
选项#1似乎是耗时且容易出错的。 选项#2似乎是最好的选择。但是,它需要在某些操作之前调用find()。上面的read()例子从不执行beforeFind(),并且没有beforeRead()回调。
对此提出建议?
您的网站上有用户认证系统吗?如果是这样,你应该将用户分组在一起。然后,您可以添加逻辑到您的阅读功能,以允许学生组的用户只能访问他们自己的用户ID中的数据。这是我会采取的路线。 – m1ket 2013-04-05 16:14:18