[英]How to secure UPDATE action in CakePHP?
我想避免多用戶CakePHP應用程序中的UPDATE安全問題。 我將在這個簡單的示例中對其進行說明。 有一個簡單的編輯方法,例如:
public function edit($id)
{
if ($this->request->is('post')) {
$updated = $this->Template->save($this->request->data);
// Do some logic here...
}
$this->request->data = $this->Template->find('first', array('conditions' => array('Template.id' => $id)));
}
問題:當有人修改POST數據並更改ID(記錄的PK
)時,CakePHP將修改另一個用戶的記錄。 我想保護條件並更新由兩個條件定義的記錄-它的PK
和user id
(所有者,已登錄的用戶)。
有一個模型方法updateAll()
可以接受帶有UPDATE ... WHERE
條件的數組,但是該方法不像save()
方法那樣容易使用,因為它需要的數據數組與save()
方法的結構不同,而且我有將$this->request->data
修改為適當的結構並轉義字符串值。
在執行更新之前,我有一個SELECT
帶有兩個條件( PK
和owner id
)的適當記錄的想法,但是我不喜歡這樣做,因為還有一個數據庫操作。
還有其他方法或解決方法如何保護CakePHP應用程序中的UPDATE
操作?
只需加載安全組件,如下所示:
CakePHP 3
use App\Controller\AppController;
use Cake\Event\Event;
class TemplatesController extends AppController
{
public function initialize()
{
parent::initialize();
$this->loadComponent('Security');
}
}
在此處了解更多信息: CakePHP安全-防止表單篡改
CakePHP 2
<?php
class TemplateController extends AppController {
public $components = array('Security');
}
在此處閱讀更多CakePHP安全性
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.