簡體   English   中英

如何確保CakePHP中的UPDATE操作安全?

[英]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將修改另一個用戶的記錄。 我想保護條件並更新由兩個條件定義的記錄-它的PKuser id (所有者,已登錄的用戶)。

有一個模型方法updateAll()可以接受帶有UPDATE ... WHERE條件的數組,但是該方法不像save()方法那樣容易使用,因為它需要的數據數組與save()方法的結構不同,而且我有將$this->request->data修改為適當的結構並轉義字符串值。

在執行更新之前,我有一個SELECT帶有兩個條件( PKowner 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM