我有一個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