CakePHP membuatkan pembinaan laman web menjadi mudah disebabkan konsep Magik dan Rapid Application Development yang diperkenalkan. Tetapi bagaimana dengan Sekuriti ?
Perisian yang boleh dicuba untuk tujuan security
Browser : Mozilla Firefox
Plugin wajib :
1) SQL Inject Me
2) Firebug
Sila gunakan Google untuk install plugins-plugins tersebut
Filter Form Data
==========================
CakePHP menyediakan Utiliti bernama Sanitize untuk filter form data sebelum disimpan ke dalam database
Umum mengetahui yang CakePHP akan terima variable
$this->data yang didatangkan dari Form yangdisubmit oleh pengguna, jadi adalah menjadi tanggungjawab kita untuk filterkan data tersebut
Contoh 1, kod di bawah akan cleankan kesemua variable $this->data
$this->data = Sanitize::clean($this->data);
Sila rujuk : http://book.cakephp.org/#!/view/1183/Data-Sanitization
Hanya Save Field Yang Perlu Sahaja=============================
Bayangkan dalam registration form anda hanya display username,password,email,biodata tetapi di dalam table database ada field group_id. Bayangkan jika saya gunakan Firebug dan tambah virtual field group_id = 1. Dan secara automatik user biasa boleh menjadi admin :D ( kebiasaanya group_id = 1 ialah admin ). Jadi bagaimana nak bagitau CakePHP cuma save field yang berkaitan sahaja ?
Guna teknik whitelist.
Caranya, kita letak dalam array field-field yang hendak disave ke dalam DB
$whitelist = array('username', 'password', 'email', 'biodata');
if($this->save( $this->data , $whitelist ) ) {
// saved
}
Enablekan Security Component
=============================
Cara paling senang, cuma enablekan Security Component dalam Controller atau AppController, Secara automatik Form yang dibuat menggunakan object Form akan terlindung dari anasir-anasir jahat lagi nakal
$components = array('Security');
Kalau tak percaya, cuba gunakan h() function dalam view
echo h($this->Form->create('User'));