Salut tous,

Je "zieute" en ce moment le tutoriel "Système de membres" et, d'un coup, une question me vient.

Lorsque l'on utilise la console pour générer les "controller" elle sort ceci :

public function add() {
        if ($this->request->is('post')) {
            $this->User->create();
            if ($this->User->save($this->request->data)) {
                            ...]                        
                        }

Dans le tutoriel sur le système de membres, il est dit qu'il faut éviter de faire directement "$this->User->save($this->request->data)" pour la sécurité. Ce que ne fait pas le code auto-générer.

Seulement, le code auto-générer ajoute un "$this->User->create();" qui n'est pas présent dans le tutoriel.

Je me pose donc la question de savoir si l'ajout de cet élément ($this->User->create();) sécurise le "save()" ou s'il faut suivre "l'astuce" du tutoriel GrafikArt ?

Merci.

2 réponses


ker0x
Réponse acceptée

Le code généré par la console tien compte du fait que le composant Security est activé lors de la génération du Controller, de sorte à justement ne pas avoir besoin de faire tout le process de sécurisation comme dans le tuto de Grafikart. Cake détectera automatiquement si des faux champs ont été ajoutés et bloquera la requête.

Le fait de rajouter le $this->User->create() force Cake à faire un INSERT et non pas un UPDATE même si le champ id est renseigné.

Donc pour répondre à ta question, tu peux faire confiance au code généré par la console, sauf si tu désactive le composant Security.

Slt,

Ok merci de m'oter ce doute. ;)