Rabu, 16 Mac 2011

CAKEPHP Security : Melindungi Form anda

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'));

3 ulasan:

  1. tq bro, teknik whitelist tu yg menarik sekali.

    BalasPadam
  2. wah, thanks. info berguna.. perlu edit skit je dr code yang dibake.

    BalasPadam
  3. Yea terima kasih. Sangat berguna. Kipidap!

    BalasPadam