Pemrograman Web
Berbasis Framework
Pertemuan 7 :
Keamanan Aplikasi
Pokok Bahasan
•
•
•
•
•
•
•
Pendahuluan
Penanganan Error Reporting
Antisipasi serangan XSS
Validasi Form
Pengamanan System Core Framework
Autentikasi dengan Session
Pengamanan pada konfigurasi httpd.conf
TIK :
Setelah mengikuti kuliah ini mahasiswa dapat mengetahui dan
memahami faktor keamanan aplikasi pada Web Framework
Pendahuluan
• Secara umum suatu Framework telah dilengkapi fasilitas
yg memudahkan pembuatan aplikasi termasuk dalam
hal keamanan aplikasi.
• Faktor/celah serangan terhadap aplikasi :
– Error reporting
– Halaman login
– Form input
– Alamat URL
– Konfigurasi server
Penanganan Error Reporting
Contoh (kesalahan dalam pengetikan url)
• http://www.domainmu.com/wp-content/themes/nama-themes
• nama-theme adalah nama theme yang aktif (sedang dipakai) Jika blog
wordpress belum tertutup celah keamanannya, maka akan muncul pesan
error dengan menunjukkan patch alamat dari file index.php di dalam folder
theme yang dipakai tersebut.
contohnya :
Fatal Error : Call to undefined function get_header() in
/home/kimcil/public_html/wp-content/themes/wow-gitu/index.php
Penanganan Error Reporting
• Buka file index.php pada root folder
• Ganti baris program berikut :
error_reporting(E_ALL);
• Menjadi :
error_reporting(0);
• Buka file error_db.php pada : system/application/errors/
• Ganti baris program berikut :
<h1><?php echo $heading; ?></h1>
<?php echo $message; ?>
• Menjadi :
<h1><?php //echo $heading; ?></h1>
<?php echo //$message; ?>
Antisipasi Serangan XSS
• XSS merupakan kependekan yang digunakan untuk istilah
cross site scripting.
• XSS merupakan salah satu jenis serangan injeksi code (code
injection attack). XSS dilakukan oleh penyerang dengan cara
memasukkan kode HTML atau client script code lainnya ke
suatu situs. Serangan ini akan seolah-olah datang dari situs
tersebut. Akibat serangan ini antara lain penyerang dapat
mem-bypass keamanan di sisi klien, mendapatkan informasi
sensitif, atau menyimpan aplikasi berbahaya
Antisipasi Serangan XSS
• XSS Filtering digunakan untuk mencegah kode-kode
jahat yg jika masuk ke sistem akan menyebabkan error
sehingga menimbulkan celah masuk ke sistem secara
ilegal.
• Buka file config.php pada : system/application/config/
• Ganti baris program berikut :
$config['global_xss_filtering'] = FALSE;
• Menjadi :
$config['global_xss_filtering'] = TRUE;
Antisipasi Serangan XSS (2)
• Jangan biasakan gunakan fungsi
$_POST($variabel), ganti dengan
$this->input->post($variabel, TRUE)
• Contoh :
$data[‘lihat’] = $_POST[‘dataku’];
• Ubah menjadi :
$data[‘lihat’] = $this->input->post(’dataku’, TRUE)
Validasi Form
• Validasi form digunakan untuk meminimalkan kesalahan
input (termasuk antisipasi serangan melalui form atau
SQL Injection)
• Untuk menjalankan validasi form harus mengaktifkan
library form_validation, melalui :
– Autoload.php
• $autoload['libraries'] = array(‘form_validation');
– Secara manual
• $this->load->library('form_validation');
Validasi Form (2)
• Pengaturan manajemen proses antara controller, model
dan view
• Contoh :
<?php
class Form extends Controller {
function index() {
if ($this->form_validation->run() == FALSE)
{
$this->load->view('myform');
}
else {
$this->load->view('formsuccess');
}
}
}
?>
Validasi Form (3)
• Penggunaan validation_rule
• Format :
$this->form_validation->set_rules();
• Contoh :
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_rules('passconf', 'Password Confirmation',
'required');
$this->form_validation->set_rules('email', 'Email', 'required');
Validasi Form (4)
• Penggunaan Cascading Rule
• Merupakan penggunaan multi rule
• Contoh :
$this->form_validation->set_rules('username', 'Username',
'required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('password', 'Password',
'required|matches[passconf]');
$this->form_validation->set_rules('passconf', 'Password Confirmation',
'required');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email');
Validasi Form (5)
• Penggunaan Fungsi Callback
• Merupakan penggunaan fungsi khusus untuk validasi
• Contoh :
$this->form_validation->set_rules('username', 'Username',
'callback_username_check');
• Akan menjalankan fungsi :
function username_check($str) {
if ($str == 'test') {
$this->form_validation->set_message('username_check', 'The %s
field can not be the word "test"');
return FALSE;
} else {
return TRUE;
}
}
Pengamanan System Core
Framework
• Pindahkan posisi folder system (tanpa mengikutsertakan
folder Application) di atas dari root folder
• Awal :
– Root folder
• system
–application
• Menjadi :
– Root folder
• system
• application
Pengamanan System Core
Framework (2)
• Agar folder sistem dapat dikenali, buka file
index.php di root folder
• Ubah baris program berikut :
$system_folder = "system";
• Menjadi :
$system_folder = “../system";
Autentikasi dengan Session
• Penggunaan umum Session dalam hal
layanan login pengguna
• Untuk menggunakan layanan session
harus diaktifkan library dengan cara :
– Autoload.php
• $autoload['libraries'] = array('session');
– Secara manual
• $this->load->library('session');
Autentikasi dengan Session (2)
• Setelah login dan account benar, data
disimpan pada session dengan perintah :
set_userdata();
• Contoh :
$newdata = array(
‘username’ => $data[‘user’],
‘status’ => ‘ok’);
$this->session->set_userdata($newdata);
Autentikasi dengan Session (3)
• Setiap akan masuk ke prosedur yg butuh
otorisasi, maka isi session dicek apa sesuai atau
tidak
• Contoh :
$status = $this->session->userdata(‘status’);
If (!isset($status) || $status != ‘ok’) {
$this->loginulang();
} else {
$this->inbox();
}
Autentikasi dengan Session (4)
• Jika user keluar dari accountnya, maka data
session harus dihapus.
• Contoh :
$newdata = array(
‘username’ => ‘ ’, ‘status’ => ‘ ’);
$this->session->unset_userdata($newdata);
Pengamanan pada konfigurasi httpd.conf
• File .htaccess adalah file konfigurasi yang disediakan oleh web server
Apache, yang biasanya digunakan untuk mengubah pengaturan default dari
Apache. File .htaccess merupakan file teks ASCII sederhana yang
biasanya diletakkan dalam root direktori. File ini diharuskan dalam format
ASCII dan bukan binary dan untuk file permission (atribut file) pada
server hosting harus di set 644 (rw-r-r).
• Hal tersebut dimaksudkan agar server dapat mengakses file .htaccess, tapi
mencegah user untuk mengakses file .htaccess dari browser mereka.
• File .htaccess yang diletakkan dalam root direktori dapat digunakan untuk
mengubah konfigurasi dari subdirektori-subdirektori yang ada didalamnya,
sehingga dalam satu website biasanya kita cukup untuk mempunyai 1
file .htaccess saja yang diletakkan dalam root direktori.
Pengamanan pada konfigurasi
httpd.conf
• Buka file httpd.conf (misal di : C:/xampp/apache/conf/)
• Ubah baris program :
#LoadModule rewrite_module modules/mod_rewrite.so
• Menjadi :
LoadModule rewrite_module modules/mod_rewrite.so
• Buka file config.php di folder system/application/config/
• Ubah baris program :
$config['index_page'] = "index.php";
• Menjadi :
$config['index_page'] = “";
Pengamanan pada konfigurasi
httpd.conf (2)
• Buat file .htaccess pada root direktori CI (sejajar
dengan file index.php)
• Masukkan kode program berikut :
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER}
!^http://(www.)?namadomain.com/.*$ [NC]
RewriteRule .(gif|jpg)$ - [F]
Referensi :
Wardana, Menjadi Master PHP dengan
Framework CodeIgniter, Elexmedia
Komputindo, Jakarta, 2010.

frarewrewrewrewdffrfdsfdfdsffmework7.pptx

  • 1.
  • 2.
    Pokok Bahasan • • • • • • • Pendahuluan Penanganan ErrorReporting Antisipasi serangan XSS Validasi Form Pengamanan System Core Framework Autentikasi dengan Session Pengamanan pada konfigurasi httpd.conf TIK : Setelah mengikuti kuliah ini mahasiswa dapat mengetahui dan memahami faktor keamanan aplikasi pada Web Framework
  • 3.
    Pendahuluan • Secara umumsuatu Framework telah dilengkapi fasilitas yg memudahkan pembuatan aplikasi termasuk dalam hal keamanan aplikasi. • Faktor/celah serangan terhadap aplikasi : – Error reporting – Halaman login – Form input – Alamat URL – Konfigurasi server
  • 4.
    Penanganan Error Reporting Contoh(kesalahan dalam pengetikan url) • http://www.domainmu.com/wp-content/themes/nama-themes • nama-theme adalah nama theme yang aktif (sedang dipakai) Jika blog wordpress belum tertutup celah keamanannya, maka akan muncul pesan error dengan menunjukkan patch alamat dari file index.php di dalam folder theme yang dipakai tersebut. contohnya : Fatal Error : Call to undefined function get_header() in /home/kimcil/public_html/wp-content/themes/wow-gitu/index.php
  • 5.
    Penanganan Error Reporting •Buka file index.php pada root folder • Ganti baris program berikut : error_reporting(E_ALL); • Menjadi : error_reporting(0); • Buka file error_db.php pada : system/application/errors/ • Ganti baris program berikut : <h1><?php echo $heading; ?></h1> <?php echo $message; ?> • Menjadi : <h1><?php //echo $heading; ?></h1> <?php echo //$message; ?>
  • 6.
    Antisipasi Serangan XSS •XSS merupakan kependekan yang digunakan untuk istilah cross site scripting. • XSS merupakan salah satu jenis serangan injeksi code (code injection attack). XSS dilakukan oleh penyerang dengan cara memasukkan kode HTML atau client script code lainnya ke suatu situs. Serangan ini akan seolah-olah datang dari situs tersebut. Akibat serangan ini antara lain penyerang dapat mem-bypass keamanan di sisi klien, mendapatkan informasi sensitif, atau menyimpan aplikasi berbahaya
  • 7.
    Antisipasi Serangan XSS •XSS Filtering digunakan untuk mencegah kode-kode jahat yg jika masuk ke sistem akan menyebabkan error sehingga menimbulkan celah masuk ke sistem secara ilegal. • Buka file config.php pada : system/application/config/ • Ganti baris program berikut : $config['global_xss_filtering'] = FALSE; • Menjadi : $config['global_xss_filtering'] = TRUE;
  • 8.
    Antisipasi Serangan XSS(2) • Jangan biasakan gunakan fungsi $_POST($variabel), ganti dengan $this->input->post($variabel, TRUE) • Contoh : $data[‘lihat’] = $_POST[‘dataku’]; • Ubah menjadi : $data[‘lihat’] = $this->input->post(’dataku’, TRUE)
  • 9.
    Validasi Form • Validasiform digunakan untuk meminimalkan kesalahan input (termasuk antisipasi serangan melalui form atau SQL Injection) • Untuk menjalankan validasi form harus mengaktifkan library form_validation, melalui : – Autoload.php • $autoload['libraries'] = array(‘form_validation'); – Secara manual • $this->load->library('form_validation');
  • 10.
    Validasi Form (2) •Pengaturan manajemen proses antara controller, model dan view • Contoh : <?php class Form extends Controller { function index() { if ($this->form_validation->run() == FALSE) { $this->load->view('myform'); } else { $this->load->view('formsuccess'); } } } ?>
  • 11.
    Validasi Form (3) •Penggunaan validation_rule • Format : $this->form_validation->set_rules(); • Contoh : $this->form_validation->set_rules('username', 'Username', 'required'); $this->form_validation->set_rules('password', 'Password', 'required'); $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required'); $this->form_validation->set_rules('email', 'Email', 'required');
  • 12.
    Validasi Form (4) •Penggunaan Cascading Rule • Merupakan penggunaan multi rule • Contoh : $this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]'); $this->form_validation->set_rules('password', 'Password', 'required|matches[passconf]'); $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required'); $this->form_validation->set_rules('email', 'Email', 'required|valid_email');
  • 13.
    Validasi Form (5) •Penggunaan Fungsi Callback • Merupakan penggunaan fungsi khusus untuk validasi • Contoh : $this->form_validation->set_rules('username', 'Username', 'callback_username_check'); • Akan menjalankan fungsi : function username_check($str) { if ($str == 'test') { $this->form_validation->set_message('username_check', 'The %s field can not be the word "test"'); return FALSE; } else { return TRUE; } }
  • 14.
    Pengamanan System Core Framework •Pindahkan posisi folder system (tanpa mengikutsertakan folder Application) di atas dari root folder • Awal : – Root folder • system –application • Menjadi : – Root folder • system • application
  • 15.
    Pengamanan System Core Framework(2) • Agar folder sistem dapat dikenali, buka file index.php di root folder • Ubah baris program berikut : $system_folder = "system"; • Menjadi : $system_folder = “../system";
  • 16.
    Autentikasi dengan Session •Penggunaan umum Session dalam hal layanan login pengguna • Untuk menggunakan layanan session harus diaktifkan library dengan cara : – Autoload.php • $autoload['libraries'] = array('session'); – Secara manual • $this->load->library('session');
  • 17.
    Autentikasi dengan Session(2) • Setelah login dan account benar, data disimpan pada session dengan perintah : set_userdata(); • Contoh : $newdata = array( ‘username’ => $data[‘user’], ‘status’ => ‘ok’); $this->session->set_userdata($newdata);
  • 18.
    Autentikasi dengan Session(3) • Setiap akan masuk ke prosedur yg butuh otorisasi, maka isi session dicek apa sesuai atau tidak • Contoh : $status = $this->session->userdata(‘status’); If (!isset($status) || $status != ‘ok’) { $this->loginulang(); } else { $this->inbox(); }
  • 19.
    Autentikasi dengan Session(4) • Jika user keluar dari accountnya, maka data session harus dihapus. • Contoh : $newdata = array( ‘username’ => ‘ ’, ‘status’ => ‘ ’); $this->session->unset_userdata($newdata);
  • 20.
    Pengamanan pada konfigurasihttpd.conf • File .htaccess adalah file konfigurasi yang disediakan oleh web server Apache, yang biasanya digunakan untuk mengubah pengaturan default dari Apache. File .htaccess merupakan file teks ASCII sederhana yang biasanya diletakkan dalam root direktori. File ini diharuskan dalam format ASCII dan bukan binary dan untuk file permission (atribut file) pada server hosting harus di set 644 (rw-r-r). • Hal tersebut dimaksudkan agar server dapat mengakses file .htaccess, tapi mencegah user untuk mengakses file .htaccess dari browser mereka. • File .htaccess yang diletakkan dalam root direktori dapat digunakan untuk mengubah konfigurasi dari subdirektori-subdirektori yang ada didalamnya, sehingga dalam satu website biasanya kita cukup untuk mempunyai 1 file .htaccess saja yang diletakkan dalam root direktori.
  • 21.
    Pengamanan pada konfigurasi httpd.conf •Buka file httpd.conf (misal di : C:/xampp/apache/conf/) • Ubah baris program : #LoadModule rewrite_module modules/mod_rewrite.so • Menjadi : LoadModule rewrite_module modules/mod_rewrite.so • Buka file config.php di folder system/application/config/ • Ubah baris program : $config['index_page'] = "index.php"; • Menjadi : $config['index_page'] = “";
  • 22.
    Pengamanan pada konfigurasi httpd.conf(2) • Buat file .htaccess pada root direktori CI (sejajar dengan file index.php) • Masukkan kode program berikut : RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?namadomain.com/.*$ [NC] RewriteRule .(gif|jpg)$ - [F]
  • 23.
    Referensi : Wardana, MenjadiMaster PHP dengan Framework CodeIgniter, Elexmedia Komputindo, Jakarta, 2010.