Modul Developer (Pemrograman Web - Mahir)
Modul Developer (Pemrograman Web - Mahir)
DEVELOPER
(PEMROGRAMAN WEB - MAHIR)
Modul 5 Library
Pelatihan Developer
(Pemrograman Web - Mahir)
Local Training for IT Capacity Building
for Central and Local Government
Local Training for IT Capacity Building
for Central & Local Government
MODUL 1
Ikhtisar Modul
Sejarah
Apa itu web framework?
Framework vs Libraries
Derajat keaktifan
Pola Framework
Framework Populer
Kelebihan menggunakan Framework
Kekurangan menggunakan Framework
2
Sejarah
World Wide Web (sering dikenal sebagai web) diciptakan pada tahun
1990
Pada awalnya web sangat statis. Pengguna tidak bisa berinteraksi
banyak dengan konten dan untuk mengupdate sepotong text (atau
sesuatu lainnya) dalam sebuah material yang dipublikasikan di web,
author harus mengedit halaman lokal dan menguploadnya ke server.
Untuk menghilangkan perkerjaan yang manual standar Common
Gateway Interface (CGI) menciptakan antarmuka aplikasi eksternal
dengan web server. CGI menciptakan sebuah proses baru untuk setiap
permuntaan ke server hasilnya beban yang berat pada sisi server ketika
berhadapan dengan sejumlah permintaan yang besar untuk sesuatu
pertumbuhan yang lebih efisien.
Pada tahun 1995 1996 pertumbuhan halaman web meningkat secara
damatis dan pada saat yang sama e-commerce berada disekitaranya.
ColdFusion, PHP dan ASP (Active Server Page) diciptakan pada periode
yang sama.
Sejarah (lanjut)
4
Apa itu web framework?
Framework adalah pengembangan software yang didesain
untuk mendukung pengembangan dari website dinamis, web
application dan web services.
Hal ini merupakan sekumpulan dari prewritten code atau
library yang menyediakan fungsionalitas umum untuk
seluruh class aplikasi. Framework dapat dilihat sebagai
sebuah dasar atau sebuah kerangka untuk membangunnya.
vs
framework Library
6
Derajat dari Keaktifan Web Framework
1."Passive" framework -:
2."Semi-active" framework-:
"Semi-active" framework merupakan framework yang dapat
menghasilkan kode dari satu kode yang sudah ada dengan
sebuah perintah dari developer. Beberapa dari framework ini
juga dapat membuat projek utuh dari perintah developer,
dengan atau tanpa opsi.
3. "Active" framework -:
Active" framework merupakan framework dimana seperti
halnya yang dimiliki semi-active framework dan juga bekerja
dalam belakang layar dengan menulis/membuat/menghasilkan
kode secara otomatis tanpa perintah apapun dari developer.
8
Kenapa Kita Membutuhkan Framework?
Secara virtula semua aplikasi web memiliki seperangkat
kebutuhan dasar umum, seperti manajemen pengguna, contoh
login pengguna yang aman, recovery password; manajemen
group dan otorisasi akses.
Sebuah Web application framework biasanya mencakup semua
fungsionalitasnya, disempurnakan melalui ratusan dari
penyebaran produksi, developer freelance yang fokus dalam
kebutuhan mereka untuk aplikasi khusus.
Dalam aplikasi web yang trafiknya tinggi seperti situs sosial, situs
pendaftaran, web framework menyediakan dukungan yang baik
untuk pengembangan aplikasi yang memiliki penanganan
kapasitas trafik yang baik dengan menerapkan teknik pooling.
WAF menyimpan data penting dalam sebuah database relasional
dan mereka berinteraksi dengan pengguna melalui sebuah
antarmuka pengguna berbasis web
Pola Framework
Presentasi:
View adalah antarmuka pengguna (contoh.
tombol)
Controller adalah kode (contoh. callback untuk
tombol)
Data:
Model adalah database
10
Beberapa Framework Populer :
Framework berbasis JAVA :
11
12
Framework Spring menyediakan sebuah pemrograman yang
komprehensif dan model konfigurasi dari modern java berbasiskan
aplikasi enterprise.
Depedensy Injection
Aspect Oriented Programming termasuk manajemen transaksi deklaratif
spring
Spring MVC web application Comprehensive dan extensible mendukung
untuk kedua perlindungan otentikasi dan otorisasi terhadap serangan
seperti session fixation, clickjacking, cross site request forgery, dll
Situs : http://linked.in security
13
cakePHP:
14
Zend Framework fokus pada pembangunan yang lebih
aman, handal dan modern Aplikasi Web 2.0 & Web
services mengkonsumsi secara luas API yang tersedia
dari vendor terkemuka seperti Google, Amazon, Yahoo!,
Flickr , facebook untuk login ke mereka.
http://thorpesystems.com
15
16
CodeIgniter merupakan software open source web framework
yang berkembang pesat, digunakan dalam pembangunan web
site dinamis dengan PHP.
Codeigniter adalah framework PHP yang powerful dengan
sebuah footprint yang sangat kecil, dibangun untuk developer
yang membutuhkan sebuah kemudahan dan toolkit yang
elegan untuk membuat fitur lengkap aplikasi web.
17
18
Kelebihan Menggunakan Framework
Penggunaan kembali dari kode kerja yang telah dibangun, diuji
dan digunakan oleh developer lain meningkatkan kehandalan dan
mengurangi waktu pengembangan
Mendapatkan (gratis) bantuan dari lainnya. Dengan membiarkan
orang lain (framework) mengurus permasalahan umum, seperti
kemananan, internalisasi, lokalisasi dll, satu akan mendapatkan
(gratis) outsourcing dari keahlian developer. Jika seorang
developer memulai dari awal dengan sebuah projek developer
harus memikirkan segalanya. Dan jika developer mengetahui
bagaimana menyelesaikan segalanya; kenapa harus
melakukannya lagi? Hanya ada risiko bug dan kebocoaran
keamanan.
19
Kelebihan (lanjut)
Framework dapat mendukung tingkat tinggi dari pemrograman,
dengan modularitas kode. Tugas dasar, seperti login dan
penanganan database dapat berada dalam framework dan
terpisah dalam layer lainnya adalan logika bisnis.
Dengan meningkatkan satu framework mungkin memberikan fitur
tambahan tanpa implementasi tambahan. Ambil contoh jika
sebuah e-commerce menggunakan sebuah framework dan tim
dibelakang framework rilis terbaru mungkin memberikan cara-cara
baru dari metode pembayaran.
20
Kekurangan Menggunakan Framework
Untuk dapat menggunakan framework yang terbaik, sering
membutuhkan pendidikan yang signifikan dan pengalaman.
Kinerja kemungkinan berat dari kode umum yang dibangun untuk
menangani sebanyak mungkin dan tidak optimal untuk sebuah
tugas tertentu.
Jika sebuah bug atau sebuah risiko keamanan ditemukan dalam
framework akan terdapat di semua aplikasi yang menggunakan
framework. Beberapa framework sangat kaku dan tidak
memberikan cukup fleksibilitas kebutuhan developer untuk
beberapa aplikasi.
Membangun dari awal biasanya memberikan perasaan lebih
produktif dimana dapat membuat developer lebih damai dan
mengurangi perasaan dari stuck dan dengan demikian lebih
kreatif dan mengurangi kebosanan
21
Akhir Modul 1
Local Training for IT Capacity Building
for Central & Local Government
Review PHP
MODUL 2
Ikhtisar Modul
Dasar PHP
Variabel dan Konstanta
PHP Flow Control
Array
2
Three-tiered Web Site: LAMP
response PHP
Database
MySQL
4
Teknik Server Side
PHP
Java EE: Servlet, JSP
.NET
CGI / Perl (Very old)
Ruby
6
Pengenalan PHP
Response
8
Pengenalan Sintak PHP
PHP memiliki sintak yang sangat mudah, jika anda sudah biasa
dengan bahasa C
Memiliki struktur yang sama dengan bahasa pemrograman lain yang
anda gunakan
PHP didesain untuk ditampilkan ke browser, tetapi memungkinkan
juga dilakukan di aplikasi CLI
Contoh
<?php
print "What is your name?\n";
$name = trim(fgets(STDIN));
print "Hello " . $name;
?>
10
Variabel
Variabel di php direpresentasikan dengan sebuah tanda dolar
PHP medukung delapan tipe
boolean, integer, float, double, array, object, resource dan NULL
11
Contoh
<?php
$a_bool = TRUE; // a boolean
$a_str = "foo"; // a string
$a_str2 = 'foo'; // a string
$an_int = 12; // an integer
12
Penamaan Variabel
Case-sensitivity
Diawali dengan hrufu atau _
Setelah itu anda dapat memberikan angka, huruf dan _
$var = 'Bob';
$Var = 'Joe';
print "$var, $Var";
$4site = 'not yet';
$_4site = 'not yet';
13
Konstanta
Anda tidak dapat merubah nila konstanta setalah dideklarasikan
define(CONSTANT, "value");
print CONSTANT;
14
Magic Constants
Referensi:
http://fi.php.net/manual/en/language.constants.predefi
ned.php
15
Scope
<?php
$a = "Pekka";
print My name is " . $a;
?>
16
Scope
<?php
$a = "Pekka";
function Test() {
print $a;
}
print My name is ;
Test();
?>
17
Scope
<?php
$a = "Pekka";
function Test() {
global $a;
print $a;
}
print My name is ;
Test();
?>
18
Struktur Kontrol
If, else, elseif, switch
while, do-while, for
foreach
break, continue
19
Strings
Kutip satu: 'this is a $variable'
Kutip dua: "this is a $variable"
Heredoc:
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
20
Memodifikasi String
$mj = "moi";
print $mj[0];
$mj[0] = 'x';
print $mj;
$mj = $mj . " hei";
print $mj;
$mj .= " terse";
print $mj;
21
Fungsi String
Referensi fungsi string
http://www.php.net/manual/en/ref.strings.php
22
Statements
Setiap statement diakhiri dengan tanda titik koma (;)
$a = 5;
$a = function();
$a = ($b = 5);
$a++; ++$a;
$a += 3;
23
Operators
Aritmatika: +,-,*,%
Setting variabel: =
Bit: &, |, ^, ~, <<, >>
Perbandingan: ==, ===, !=, !==, <, > <=, >=
24
Ternary Operator
$variable = (1 < $x) ? 'value1' : 'value2';
Equals
if(1 < $x) {
$variable = 'value1';
}
else {
$variable = 'value1';
}
25
Operator Eksekusi
Mengeksekusi command di shell
$result = `ls -al`;
print $result;
26
Operator Logika
$a and $b
$a or $b
$a xor $b
!$a;
$a && $b;
$a || $b;
27
Operator String
Dua operator untuk string : '.' dan '.='
'.' Menggabungkan String.
'.=' menambahkan string di akhir.
Contoh:
$v= "Hello" . $b;
$v.= "Hello";
28
Struktur Kontrol
29
IF
<?php
if ($a > $b) {
echo "a is bigger than b";
} else {
echo "a is NOT bigger than b";
}
if ($a > $b) {
echo "a is bigger than b";
} elseif ($a == $b) {
echo "a is equal to b";
} else {
echo "a is smaller than b";
}
?>
30
While dan Do-While
<?php
$a=0;
while($a<10){
print $a; $a++;
}
$i = 0;
do {
print $i;
} while ($i > 0);
?>
31
For
32
Foreach
$arr = array(1, 2, 3, 4);
foreach ($arr as $value) {
echo $value;
}
33
Switch
switch ($i) {
case 0:
echo "i equals 0";
break;
case 1:
echo "i equals 1";
break;
case 2:
echo "i equals 2";
break;
}
34
Array
Sebuah array dapat menyimpa satu atau lebih nilai
dalam satu variabel
Tiap elemen didalam array ditetapkan ID sendiri
sehingga dapat dengan mudah diakses
$array[key] = value;
35
Jenis Array
Array Numerik
Array Asosiatif
Array Multidimensi
36
Array Numerik
- Sebuah array numerik menyimpan tiap elemen dengan
sebuah ID Key Numerik
- Tiga cara untuk menulis sebuah array numerik
37
Contoh
Otomatis
$names = array("Peter","Quagmire","Joe");
Manual
$names[0] = "Peter;
$names[1] = "Quagmire;
$names[2] = "Joe";
38
Contoh di PHP Script
<?php
$names[0] = "Peter";
$names[1] = "Quagmire";
$names[2] = "Joe";
39
Array Asosiatif
Sebuah asosiatif array, setiap ID Key diasosiasikan
dengan sebuah nilai.
Ketika menyimpan data dengan nilai nama yang
ditetapkan, sebuah array numerik tidak selalu
menjadi cara terbaik untuknya.
Dengan array asosiatif kita dapat gunakan nilainya
sebagai key dan memberinya nilai.
40
Contoh
Menggunakan sebuah array untuk memberikan usia pada tiap
orang.
41
42
Array Multidimensi
Pada sebuah array multidimensi, tiap elemen di array
utama dapat juga berupa array
Dan tiap elemen dalam sub-array dapat berupa sebuah
array dan seterusnya
43
Contoh
$families = array
(
"Griffin"=>array
(
"Peter",
"Lois",
"Megan" ),
"Quagmire"=>array ( "Glenn" ),
"Brown"=>array
(
"Cleveland",
"Loretta",
"Junior"
)
);
44
Hasil
Array
(
echo "Is " . $families['Griffin'][2] .
[Griffin] => Array
" a part of the Griffin family?";
(
[0] => Peter
[1] => Lois
[2] => Megan
Is Megan a part of the Griffin
)
[Quagmire] => Array family?
(
[0] => Glenn
)
[Brown] => Array
(
[0] => Cleveland
[1] => Loretta
[2] => Junior
)
)
45
Akhir Modul 2
Local Training for IT Capacity Building
for Central & Local Government
Review Database
MODUL 3
Ikhtisar Modul
Overview MySQL
DDL & DML
Koneksi Database
2
Konsep Database
Entitas: sebuah objek, konsep atau event.
Field (Kolom): mendekripsikan sebuah karakteristik tunggal dari
sebuah entitas.
Record (baris): sekumpulan dari field (karakteristik) yang
menjelaskan tiap entitas.
Tabel: Kumpulan dari record untuk sebuah entitas tertentu.
Database: Kumpulan dari tabel.
MySQL
4
Navigasi di MySQL
6
Operasi CRUD MySQL
Mendapatkan semua data dari sebuah tabel:
mysql> SELECT * FROM vehicles;
+----------+-------+-----------+----------+----------+
| VIN | Year | Make | Model | Mileage |
+----------+-------+-----------+----------+----------+
| 8YTR754 | 2002 | Ford | Mustang | 21000 |
| 4GKU390 | 2001 | Chevrolet | Corvette | 35000 |
| 92A84UJ | 1998 | Dodge | Viper | 89256 |
+----------+-------+-----------+----------+----------+
8
Operasi CRUD MySQL
10
Structured Query Language (SQL)
Berdasarkan aljabar relasional, tetapi tidak sepenuhnya identik.
Relations Tables
Tuples Rows
Attributes Columns
Tidak seperti sebuah relasi, sebuah tabel bukan merupakan
sebuah kumpulan. Duplikat tidak secara otomatis dihilangkan.
Hal ini untuk alasan praktis. Eliminasi duplikat tidak efisien dalam
implementasinya.
Seperti relasi, urutan baris dalam tabel tidak relevan.
11
12
Data Manipulation Language (DML)
DML (Data Manipulation Language): Mendukung perindah untuk
memanipulais database (query, insert, update, delete).
Dasar Perintah DML
INSERT: untuk memasukkan record ke tabel
UPDATE: untuk merubah status (nilai) dari baris
DELETE: untuk menghapus baris
SELECT: sebuah perintah query yang menggunakan relasi aljabar
seperti ekspressi
Berbagai macam opsi disediakan untuk menghandle
penegakan/pelanggaran dari integritas constraints
13
14
Koneksi Database
Dengan PHP, anda dapat menghubungkan dan memanipulasi
database.
MySQL merupakan database yang paling populer digunakan
oleh PHP.
PHP yang digabungkan dengan MySQL merupakan cross-
platform (anda dapat mengembangkannya di windows atau
pada platform unix)
15
16
Gunakan MySQLi atau PDO?
Keduanya MySQLi dan PDO memiliki keuntungan masing-masing:
PDO dapat bekerja pada 12 database system yang berbeda, sedangkan
MySQLi hanya akan bekerja pada database MySQL
Sehingga, jika anda akan merubah project untuk menggunakan database
lain PDO mempermudah prosesnya. Anda hanya merubah string koneksi
dan sedikit query. Dengan MySQLi anda akan membutuhkan penulisan
kode ulang termasuk query
Keduanya adalah berorientasi objek, tetapi MySQLi juga menggunakan
sebuah prosedur API
Keduanya mendukung Prepared Statement. Prepared Statement
melindungi dari SQL Injection dan sangat penting untuk keamanan
aplikasi web
17
18
Membuka Koneksi ke MySQL
MySQLi Object-Oriented
19
20
Membuka Koneksi ke MySQL
MySQLi Procedural
21
22
Membuka Koneksi ke MySQL
Perhatikan bahwa dalam contoh di atas PDO kami juga telah
ditentukan database (myDB). PDO membutuhkan database
yang valid untuk terhubung ke. Jika ada database yang
ditentukan, eksepsi dilemparkan.
Satu manfaat besar dari PDO adalah bahwa ia memiliki kelas
pengecualian untuk menangani masalah yang mungkin terjadi
dalam query database kami. Jika eksepsi dilemparkan dalam
try {} blok, script berhenti mengeksekusi dan mengalir langsung
ke tangkapan pertama () {} blok.
23
MySQLi Procedural
PDO
24
Akhir Modul 3
Local Training for IT Capacity Building
for Central & Local Government
MODUL 4
Ikhtisar Modul
2
3
4
Bagaimana Anda Membangun Website Sekarang Ini?
6
Apa itu CodeIgniter?
CodeIgniter adalah framework aplikasi web ringan yang ditulis
dalam PHP yang mengadopsi pendekatan model-view-
controller untuk pengembangannya.
8
Kenapa Menggunakan CodeIgniter?
Kaya Fitur
Ringan
Open source
Dukungan komunitas yang baik oleh komunitas aktif
Baik dengan contoh Dokumentasi
Kemudahan untuk konfigurasi
Mendukung banyak database
10
Arsitektur MVC
Pemisahan antarmuka pengguna dari logika bisnis
Model mengenkapsulasi inti data aplikasi dan fungsionalitas logika
bisnis
View memperoleh data dari model dan mempresentasikannya ke
pengguna.
Controller Menerima dan menterjemahkan masukan ke permintaan
pada model atau view
Figure : 01
11
Model-View-Controller
Model representasi dari data
View menjadikan data yang sesuai untuk interaksi dengan
pengguna
Controller traffic cop yang melewatkan model data ke view
dan sebaliknya
Pemisahan dari kepentingan mengijinkan untuk flesibilitas yang
lebih besar, penggunaan kembali dari kode dan secara
keseluruhan perlindungan dari akal sehat developer.
12
Controller
13
View
Kode yang menampilkan informasi ke pengguna
View dapa berupa:
Halaman web dengan PHP code snippedt didalamnya
Halaman wen dengan form untuk mendapatkan input pengguna
Output lain (CSV, PDF, dll)
14
Model
Sebuah class yang terdiri satu atau lebih terkait method
(Kustom fungsi PHP)
Umumnya digunakan:
Create
Read
Update
Delete
15
16
CodeIgniter URL
17
<?php
function First() {
parent::Controller();
}
function index() {
echo <h1> Hello CUET !! </h1> ;
}
}
?>
Note:
Nama Class harus diawali dengan Huruf Besar.
Dalam kasus constructor anda harus menggunakan parent::Controller();
18
Controllers
www.your-site.com/index.php/first/bdosdn/world
<?php
function index() {
echo <h1> Hello CUET !! </h1> ;
}
function bdosdn( $location ) {
echo <h2> Hello $location !! </h2>;
}
}
?>
// Output Will be Hello world !!
Note:
Fungsi Index selalu di-load secara default. Kecuali ada segmen kedua
dalam URL
19
$this->load->model(mymodel);
$data = $this->mymodel->get_info();
20
VIEWS : File Template
web_root/myci/system/application/views/myview.php
<html>
<title> My First CodeIgniter Project</title>
<body>
<h1> Welcome ALL To My .. ::: First Project :::
. . . </h1>
</body>
</html>
21
VIEWS
<html>
<title> ..::Personal Info::.. </title>
<body>
Full Name : <?php echo $full_name;?> <br />
E-mail : <?=email;?> <br />
</body>
</html>
22
VIEWS
Terdapat 3 mekanisme yang dapat dimanfaatkan untuk menunjukkan data
dinamis ke dalam sebuah file View:
- PHP Murni
- Sintak Alternatif PHP
- CodeIgniter Template Engine
Note:
Terdapat sintak alternatif lain for, foreach, while
23
Class CodeIgniter
CI built-in classes meliputi fungsionalitas dasar yang sering
digunakan oleh aplikasi web
Class yang kebanyakan digunakan adalah:
Database
Input
Loader
URI
Validation
24
Class Database
Menghasilkan query menggunakan pola Active Record
Automatic escaping dari nilai input.
Menyediakan metode Chaining untuk kemudahan
membangun query
$this->db->where(name,$name);
25
Input Class
26
Class Loader
Membuat berbagai macam sumber daya tersedia::
Databases
Views
Helpers
Plugins
$this->load->view(viewname);
27
Class URI
Menyediakan akses ke bagian tertentu dari string URI
Berguna untuk membangun RESTful URIs
$this->uri->segment(n);
28
Class Validation
Membantu memvalidasi form input pengguna
Field yang dibutuhkan
Membutuhkan format string formatting (length, regexp)
Mengaktifkan pesan sukses dan gagal pada pengiriman form
Mengaktifkan re-population dari field form setelah pengiriman
form
29
Class Lainnya
Benchmarking Language
(internationalization)
Calendaring
Output
Email
Pagination
Encryption
Session
File uploading
Trackback
FTP
Unit testing
HTML Table
XML-RPC
Image Manipulation
Zip encoding
30
Helpers dan Plugins
Codeigniter datang dengan sebuah array yang luas dari
fungsi helper yang menambahkan kenyamanan untuk
aplikasi dan menyediakan kemudahan dari penggunaan
kembali.
$this->load->helper(helper_name);
CodeIgniter juga mengijinkan untuk penggunaan dari fungsi
kostum add-on yang disebut plugins.
$this->load->plugin(plugin_name);
31
32
Tag Penutup PHP
Tag penutup PHP ?> adalah opsional untuk parser PHP.
Jika digunakan, setiap sepasi setelah tag penutup PHP dapat
menghasilkan PHP error, warning atau bahkan halaman
kosong.
Untuk alasan ini, semua file PHP harus menghilangkan tag
penutup PHP dan sebagai gantinya gunakan blok komentar
untuk menampilkan rincian yang relevan untuk lokasi file
Hal ini memungkinkan anda untuk menandakan bahwa file telah
selesai.
33
Contoh
Salah
Benar
34
Class dan Penamaan Method
Salah
Benar
35
36
Salah
Benar
37
Nama Variabel
Panduan untuk nama variabel sangat mirip dengan nama class
dan nama method.
Nama variabel harus hanya terdiri huruf kecil, harus
menggunakan pemisah garis bawah untuk memisahkan kata
dan tidak menggunakan CamelCasing dan harus diberi nama
untuk mengidikasikan isinya.
Salah
38
Penamaan Variabel (lanjut)
Benar
39
Komentar
Codeigniter menyarankan anda untuk memberikan komentar kode anda
sebanyak mungkin.
Hal ini untuk dua alasan :
Membantu programmer berpeangalaman yang mungkin bekerja pada
projek yang sama dengan anda, atau jika anda me-release kode anda.
Akan membantu anda beberapa bulan kedepan untuk memahami
kode lebih cepat daripada tidak ada komentar.
Tidak ada kebutuhan style tertentu untuk komentar, tetapi Codeigniter
merekomendasikan anda menggunakan DocBlock styling, Ini
direkomendasikan karena akan diambil oleh banyak Integrated
Development Environments (IDE).
40
Komentar (lanjut)
Miskin
Baik
41
Benar
42
Tag Pembuka Pendek
Anda harus selalu menggunakan tag pembuka PHP lengkap
dan bukan tag pendek, hanya dalam kasus sebuah server tidak
mengaktifkan short_open_tag.
CodeIgniter dapat menuliskan kembali tag pendek, meskipun
PHP Style Guide menyatakan harus menggunakan tag
pembuka lengkap.
Salah
Benar
43
Benar
44
Akhir Modul 4
Local Training for IT Capacity Building
for Central & Local Government
Library
MODUL 5
Ikhtisar Modul
Pengantar Library
Class Benchmarking
Class Input dan Class Security
Class Email
Library Manipulasi Gambar
Class Pagination
Class Session
2
Pengantar Library
Codeigniter dilengkapi dengan satu set dari file class yan
gdigunakan di seluruh aplikasi hal ini dikenal sebagai
"Libraries".
Singkatnya, sebuah library adalah sebuah file yang membantu
developer menulis kode yang lebih baik, membangun aplikasi
yang lebih baik dan menjadi lebih produktif melalui penggunaan
dari fungsi abstrak.
Sebuah library menciptakan pembungkus untuk fungsi aplikasi
anda, misalnya, memungkinkan anda untuk mengganti driver
database tanpa harus merubah kode apapun.
4
Apa Yang Dapat Dilakukan Library?
Library fungsionalitas abstrak untuk developer membuatnya
menjadi mudah untuk penggunaan kembali kode.
Codeigniter dilengkapi dengan banyak library inti yang
menyedikan cara untuk kode aplikasi anda lebih cepat daripada
tanpa libray, membuang banya kode yang tidak diperlukan dari
aplikasi dan mengambil keteganan developer.
Terdapat banyak jenis library yang terdapat dalam codeigniter,
dan banyak lagi yang dikeluarkan oleh anggota komunitas.
Setiap library memiliki sebuah perbedaan dari fungsi yang
dikumpulkan, tetapi semuanya bekerja untuk membuat
pengkodean aplikasi jauh lebih sederhana daripada mereka
inginkan jika anda tidak menggunakan framework.
Class Benchmarking
Class Benchmarking digunakan untuk menghitung waktu antara
dua titik dalam aplikasi anda.
Hal ini selalu ON, yang berarti anda tidak perlu memuat library
sebelum menggunakannya.
Waktu antara dua titik yang anda tentukan dalam aplikasi anda
sangat akurat karena library ini di muat pada saat yang sama
sebagai codeigniter, dan berakhir dengan class output secepatnya
sebelum data dikirimkan ke browser.
Benchmarking adalah penting dalam setiap aplikasi yang harus
mengharapkan pada jumlah user yang besar.
Jika pada beberapa titik, anda menyadari bahwa aplikasi anda
melambat untuk user pada satu titik manapun, anda dapat
menjalankan benchmark untuk mencari tahu dimana hambatan
dan bagaimana memperbaikinya.
6
Setting Benchmark
Benchmark dapat ditambahkan ke Controller, Views dan Model
dalam tiga langkah mudah.
1. Tandai titik awal.
2. Tandai titik akhir
3. Jalankan fungsi untuk menampilkan waktu yang dilewati. .
Contoh:
8
Profiling Benchmark
Jika anda ingin benchmark anda tersedia ke class profiller
kemudaian anda perlu untuk men-set benchmark anda dalam
pasangan.
Pasangan ini harus diakhiri dengan _start dan _end, tetapi
harus dinyatakan dengan nama identik.
Contoh:
10
Memanfaatkan Class Profiler (lanjut)
Sekali diaktifkan, sebuah
laporan akan keluar pada
bagian bawah halaman
anda.
Contoh dari apa saja
informasi profiller terlihat
seperti gambar ini.
11
12
Menampilkan Konsumsi Memory
Jika instalasi PHP dikonfigurasi dengan opsi enable-memory-
limit, anda dapat menampilkan jumlah memory ayng digunakan
oleh sistem dengan menambahkan baris berikut dari kode
dalam application anda:
13
14
XSS filtering
Class Input dan Security dilengkapi dengan sebuah filter
perlindungan hack Cross Site Scripting, dimana dapat
dijalankan berbasikan per item, atau dapat di-set untuk
memfilter semua data POST dan COOKIE secara otomatis.
Hal ini tidak diatur untuk berjalan secara default karena
memiliki pengolahan overhead yang kecil dan tidak selalu
diperlukan dalam setiap kasus.
XSS filter bekerja dengan mencari javacript yang dapat
dijalankan pada halaman untuk membajak cookie atau dalam
kasus lain dengan maksud jahat. Semua XSS yang ditemukan
akan diamankan dan dikonversi menjadi entitas HTML.
15
Dalam hal ini, saya mengambil nilai dari kolom nama dari form
imajiner. Hal ini dapat berupa nama dari tiap field form yang
anda sukai.
16
Filtering Otomatis
Anda dapat menyalakan XSS filtering sepanjang waktu dan
memfilter apa saja yang datang melalui library dengan merubah
baris berikut ini dalam file system/application/config/ config.php
dari:
Menjadi
17
Filtering Gambar
Untuk memastikan keamanan upload file, terdapat opsi
parameter kedua untuk fungsi XSS clean: is_image.
Hal in digunakan untuk memeriksa gambar dari serangan XSS.
Ketika parameter kedua diset menjadi TRUE, fungsi
mengembalikan TRUE jika gambar aman, dan FALSE jika
tidak, bukan hanya mengembalikan dengan mudah sebuah
string yang dirubah.
18
Mendapatkan Data POST
Untuk mendapatkan data post, anda harus menggunakan
fungsi yang ditampilkan selanjutnya. Parameter pertama adalah
nama dari POST item yang anda cari.
19
20
Mendapatkan Data GET dan POST
Fungsi ini akan mencari melalui GET dan POST streams untuk
data; Mencari didalam POST terlebih dulu, kemudian GET.
Hal ini bekerja dalam cara yang sama seperti fungsi
sebelumnya.
21
22
Mendapatkan Data SERVER
Fungsi ini sama seperti contoh sebelumnya, tetapi hanya
mengembalikan data SERVER saja.
23
Alamat IP
Untuk mendapatkan alamat IP user, anda harus menggunakan
fungsi berikutnya.
Jika alamat IP tidak valid, akan mengembalikan 0.0.0.0.
24
Mendapatkan Sebuah User Agent
Untuk menetapkan user agent dari user, anda harus gunakan
code berikutnya.
Hal ini akan mengembalikan user agent dari web brouser user,
jika tidak terdapat satupun akan mengembalikan FALSE.
25
Class Email
Class Email adalah sebuah berlian CodeIgniter
Memungkinkan anda dengan mudah mengirimkan email dari aplikasi
anda.
Bagus untuk contact form nya, dan kegiatan mailing list untuk
menangani ribuan dari e-mail..
Class E-mail juga melayani sebagai class wrapper, hal ini
berarti anda dapat merubah car pengiriman email, tanpa harus
merubah apapun kode controller anda.
Anda dapat memilih antar fungsi mail PHP standard, sendmail
atau Simple Mail Transfer Protocol (SMTP).
26
Mengirimkan e-mail
Untuk dapat memulai class email, kita akam mudah
mengirimkan sebuah email menggunakan fungsi PHP mail,
yang mana juga opsi default untuk library ini.
Untuk memulai menggunakan library, anda perlu memuatnya
dengan cara yang sama dengan library lainnya.
27
Contoh
28
Contoh Kode Final e-mail
29
30
Contact Form
31
32
Untuk mengirimkan e-mail, kita perlu menggunakan library
email, kita muat email helper untuk memudahkan validasi
alamat email yang kita dapat dari user sebagai sebuah reply-to
e-mail address.
Kit juga dapat gunakan library ini untuk mengirimkan email
dengan sebuah fungsi tunggal.
33
34
Memeriksa Nilai dari Form
Kita perlu memastikan bahwa semua field form telah diisi. Kita
dapat melakukannya dengan mudah dengan menggunakan
fungsi PHP empty() .
35
Validasi E-mail
36
Menggunakan XSS filter
37
Mengirimkan e-mail
38
Menggunakan Email Helper
Email Helper memberikan kita banyak kemudahan cara dari
pengiriman e-mails.
Kita dapat melakukannya dengan satu baris kode:
39
40
Class File Uploading
Class File Uploading menyediakan cara yang mudah untuk mengupload file ke web
server.
Hal ini memudahkan merubah jenis dari file yang dapat di upload dan ukuran
maksimum file dan juga memberi anda sedikit perbedaan preferensi dari nama file.
Upload file menggunakan class ini sangat mudah dan biasanya proses upload sebuah
file akan terlihat seperti ini:
User ditampilkan sebuah form dan memilih sebuah file untuk diupload
File kemudian di validasi untuk memastikan terpenuhinya preferensi anda
Jika file memenuhi preferensi anda, kemudian file akan diupload ke direktori yang
anda tentukan.
Pengguna akan ditunjukkan pesan sukses atau pesan kesalahan jika file tidak
memenuhi preferensi yang anda set.
Sebelum kita dapat membuat utilitas upload, kita perlu membuat sebuah folder
upload. Buat sebuah folder baru dalam system/application/, dan beri nama uploads.
Jika anda berada pada sebuah web server, anda akan perlu melakukan CHMOD
direktori ini ke 777.
41
42
Membuat Upload Views (lanjut)
Kita juga perlu sebuah file view untuk menampilkan user sebuah pesan
sukses dan rincian dari file mereka.
Kita akan tambahkan juga sebuah link yang dapat dipilih user untuk
mengupload file lain. Anda harus beri nama file ini upload_success.php.
43
44
Membuat Upload Controller
Kita perlu untuk membuat sebuah controller upload untuk
menangani upload file dan melengkapi semua logika bisnis. Ini
adalah beberapa daftar apa yang akan controller lakukan:
Memuat semua depedensi (library, helpers, dan seterusnya)
Menampilkan form upload ke user
Menentukan jenis file yang dapat diupload oleh user dan ukuran
maksimum file
Validasi file yang akan difupload
Upload file
Menampilkan pesan sukses
45
Controller Awal
Ini controller awal kita, sekarang hanya akan memuat
depedensi yang kita butuhkan, manampilkan file view kita dan
memiliki fungsi kosong untuk proses upload
Kita set aksi form upload untuk upload/do_upload ini adalah
sederhana sebuah string URI dan kenapa fungsinya dinamakan
do_upload
46
Controller Awal (lanjut)
47
48
Upload file
49
50
Inisialisasi Library
Sebelum menggunakan Image Manipulation Library kita perlu
untuk menset sedikit nilai konfigurasi. Kita perlu untuk
menentukan image processing library yang digunakan (dari GD,
GD2, ImageMagick dan NetPBM), gambar yang akan kita lakukan
aksi dan beberapa nilai konfigurasi sedikit lagi
Kita mungkin juga perlu untuk menset beberapa nilai jika kita
membuat sebuah thumbnail.
Inisialisasi class untuk membuat sebuah thumbnail:
51
Membuat thumbnail
Cropping gambar
52
Contoh Croping Gambar
53
Memutar Gambar
Fungsi ini membutuhkan nilai konfigurasi tambahan yang harus
diset untuk sudut dari putaran.
54
Contoh: Memutar Gambar
55
56
Class Pagination
Pagination mengacu pada sistem penomoran halaman daftar dari
link nomor, biasanya ditemukan pada bawah halaman, yang
memungkinkan anda untuk menavigasi ke halaman yang berbeda.
Class Pagination CodeIgniter mudah untuk digunakan dan dapat
dikostum secara total.
Contoh
57
Mengkostumisasi Pagination
Terdapat beberapa item yang dapat anda tambahkan pada
variabel $config atas inisialisasi class. Item berikut merubah
cara penampilan pagination:
Hal ini menentukan jumlah dari link yang akan ditampilkan pada
tiap sisi dari halaman saat ini.
58
Mengkostumisasi "First" link
Anda juga dapat merubah "First" link.
Hal ini akan men-set teks first link ke "First". Anda dapat
mensetnya ke apapun; Beberapa contoh lainnya mungkin
berupa "<<" atau "1st".
59
60
Mengkostumisasi "Next" link
Untuk mengganti "Next" link, anda akan sekali lagi
menggunakan nilai config dalam cara yang sama dengan
sebelumnya.
Jika anda berniat menggunakan > untuk next link, anda akan
perlu menggunakan entitas HTML >.
61
62
Mengkostumisasi "Current Page" link
Anda dapat mengubah cara penampilan halaman saat ini.
Terdapat dua opsi.
Yang pertama adalah tag untuk ditempatkan sebalum lin dan
kedua tag untuk ditempatkan setelah link.
63
64
Class Session
Class session mengijinkan anda untuk memaintain status user
disaat mereka mengakses website anda
Class session menyimpan data dalam sebuah cookie, dimana
dapat dienkripsi secar opsional.
Anda juga dapat menyimpan data dalam sebuah database
untuk menambah keamanannya, artinya bahwa cookie user
harus cocok dengan record yang ada pada database.
Secara Default hanya sebuah cookie yang digunakan.
Jika anda mengaktifkan opsi database kemudian anda perlu
untuk membuat tabel database dengan menggunakan langkah
yang diberikan selanjutnya.
65
66
Autoload Class Session
Jika anda ingin untuk autoload class session mudah, buka file
system/application/ config/autoload.php dan tambahkan session
ke array library.
Hal ini akan dimuat dengan tiap halaman yang dibuka sehingga
anda tidak perlu menambahkan kode pada controller anda
dalam permintaan untuk memuat library.
67
68
Bagaimana Session CodeIgniter Bekerja?
Setiap saat memuat halaman, class session akan memeriksa
untuk melihat jika session saat ini adalah aktif untuk sebagian
user.
Jika session tidak ada atau kadaluarsa, hal ini akan dihasilkan
lagi.
Jika sebuah session tidak ada, informasinya akan diupdate.
Setiap waktu halaman dimuat, user akan diberikan sebuah
session ID baru.
Sekalipun class session dimuat, akan berjalan otomatis. Anda
tidak perlu melakukan apapun untuk mendapatkan operasi diatas
untuk terjadi.
Anda dapat bekerja dengan data session dan bahkan menambah
data anda ke session, tetapi segalanya dilakukan secara otomatis.
69
70
Menambah Data Session
Seperti yang dicatatkan diawal, anda dapat menambahkan
kustum data session anda sendiri.
Hal ini mengijinkan anda untuk menyimpan informasi sebanyak
yang dibutuhkan, seperti apakah atau bukan user yang
terotentikasi dengan cepat.
Untuk menambahkan data ke array session, anda haru
menggukanan kode berikut ini:
71
72
Mendapatkan Data Session
Jadi sekarang anda telah menyimpan kostum datat session anda,
anda akan perlu mengetahui bagaimana mendapatkannya kembali.
Untuk mengembalikan data session pada berbasiskan per item anda
cukup menggukanan kode berikut:
Dimana item adalah nama item dari data yang anda simpan. where
item is the item name of the data that you stored. Kita lanjutkan
dengan user authentication notion dan mendapatkan username.
Jika iterm yang anda coba dapatkan tidak ada, kemudian fungsi akan
mengembalikan FALSE.
73
74
Menghancurkan sebuah session
Untuk menghancurkan sebuah session sepenuhnya, anda akan
menggunakan fungsi berikut:
75
76
Menggunakan Session database (lanjut)
Untuk menyimpan data session dalam database, anda perlu
membuat tabel. Berikut ini dasar SQL query MYSQL, yang
diambil dari CodeIgniter User Guide.
77
Ubah menjadi
78
Menggunakan Session Database (lanjut)
Hanya mengubah nilai variabel untuk nama dari session
database
Blok kode akan terlihat seperti ini:
79
Akhir Modul 5
Local Training for IT Capacity Building
for Central & Local Government
MODUL 6
Ikhtisar Modul
Library Validasi Form
Aturan Validasi
Callbacks
Interaksi Database
2
Kenapa Saya Harus Memvalidasi Form?
Untuk menjawab pertanyaan ini adalah sederhana : Keamanan.
Jika anda meninggalkan form anda telanjang, tanpa validasi dan
kemudian menyimpan informasi langsung ke dalam database, anda
bertanggung jawab untuk serangan. Orang dapat dengan mudah
menempatkan beberapa kode SQL dan dapat melihat dump dari
sebagian atau seluruh database anda.
Dengan menggunakan form validasi dan membuat aturan, anda akan
melarang sebagian besar, jika tidak semua dari praktek ini dari kejadian
tersebut
Dengan memiliki aturan validasi anda dapat membatasi jenis dari data
yang diijinkan dalam form anda.
Terbaik dari semua, Form Validation Library membuatnya mudah untuk
mengisi field form dan untuk menunjukkan kesalahan individu pada tiap
field, membuat secara keseluruhan pengalaman user lebih baik, yang
berarti banyak, di lingkungan dengan banyak form.
4
Prose Validasi Form
Proses Validasi Form berbeda untuk developer dan untuk user.
Baca dan lihat bagaimana pengguna berinteraksi dengan form,
sebaik bagaimana developer akan membuat form.
Proses User
Sebuah form ditampilkan ke user, siapa yang kemudian
mengisinya dan mengirimkannya.
Form Validation Library kemudian mengecek form terhadap
aturan yang diset oleh developer.
Jika sebuah kesalahan terjadi library akan mengembalikan error
dan mereka akan ditampilkan terhadap form dengan field re-
populated. Proses ini berlangsung sampai suatu form valid
dikirimkan.
6
Proses Pengembangan
Anda membuat sebuah form, bersama dengan sebuah nilai
dinamis dari sebuah fungsi form helper hal ini akan re-
populate data jika diinginkan.
Anda juga ditampilkan kesalahan individu atau global dalam file
form view.
Anda menetapkan aturan validasi, yang harus ditaati. Kemudian
anda memeriksa untuk melihat jika proses validasi telah
dijalankan dan jika belum anda membuat file view form.
Contact form
Sebelumnya kita telah memvalidasi form data diri, memeriksa
ketika form dikirimkan, periksa field kosong, validasi email dan
kemudian mengirimkan email.
Pada bab ini, kira akan menggunakan Form Validation Library
untuk melengkapi tugas ini.
Semua kode yang ditunjukkan harus dalam fungsi index() dari
controller email.
8
Memuat Aset
Kita butuh memuat dua library untuk form contact : Form
Validation Library dan Class Email
Kita dapat melakukannya dalam satu baris, dengan
melemparkan sebuah array ke fungsi load->library.
Kita juga butuh memuat dua helpers: the email helper dan form
helper.
Kita akan melakukannya dengan cara yang sama seperti
memuat dua library pada kode sebelumnya.
Setting Aturan
Langkah selanjutnya dalam menggunakan Form Validation
Library adalah untuk menset aturan dari form.
Aturan ini ditetapkan dan harus ditaati.
Cara menetapkan aturan adalah dengan menggunakan fungsi
set_rules() dari Form Validation Library.
Kita menggunakan fungsinya sebagai berikut:
Note: Seperti yang anda lihat, fungsi menerima tiga parameter. Pertama nama
dari field form yang anda ingin tetapkan aturan untuknya. Parameter kedua
adalah nama yang anda ingin berikan kepadanya, untuk dibaca manusia.
Parameter terakhir adalah dimana anda melempar aturan validasi.
10
Daftar dari validation rules
required numeric
matches[ field_name] integer
min_length[x] is_natural
max_length[x] is_natural_no_zero
exact_length[x] valid_email
alpha valid_emails
alpha_numeric valid_ip
alpha_dash valid_base64
11
Menyiapkan data
Kita juga dapat menggunakan berbagai macam fungsi prepping
untuk menyiapkan data sebelum kita terapkan aturan
kepadanya.
Berikut ini sebuah daftar dari prepping rules yang dapat kita
lakukan:
xss_clean
prep_for_form
prep_url
strip_image_tags
encode_php_tags
12
Aturan
Sekarang kita tahu bagaimana menset aturan dan aturan apa yang dapat
kita gunakan, kita dapat terus dan men-set aturan seperlunya untuk form
kita.
Semua field seharusnya diperlukan, dan field email harus divalidasi untuk
memastikan alamat email berformat benar.
Kita juga ingin menjalankan semua data melalui XSS filter.
13
14
Menggunakan callbacks
Form Validation Library mengijinkan anda untuk menggunakan
callbacks sebagai aturan.
Callback adalah sebuah fungsi sederhana dalam kode controller
anda yang digunakan ditempat, atau bersama dengan sebuah
aturan.
Contohnya, anda ingin menambahkan alamat email user ke
database jika mereka tidak mengirimkan e-mail sebelumnya. Kita
dapat melakukannya dengan callback.
Pertama, buat tabel database. Terdapat tiga field: ID, nama user, dan
alamat email user.
15
16
Membuat callback
Untuk membuat callback, pertama kita butuh untuk
memutuskan bagaimana ia akan berkerja.
Pertama, kita akan melihat jika e-mail suda ada dalam
database, jika demikian kita tidak akan melakukan apa-apa.
Jika e-mail tidak terdapat dalam database, kita akan
menambahkannya sesuai dengan nama orangnya.
17
Membuat function
Membuat fungsi adalah mudah.
Note: Ketika menggunakan sebuah callback, Form Validation
Library akan melempar nilai dari field ke callback, sehingga
untuk mendapatkan e-mail kedalam callback, kita hanya butuh
untuk membuat sebuah variabel untuk mendapatkannya
18
Memuat Library Database
Kita akan butuh untuk memuat library database. Kita lakukan
sedikit berbeda dengan library lainnya, karena hal ini lebih
besar dibandingkan lainnya.
19
20
Menambahkan Sebuah Kondisi
Kita hanya ingin menambahkan nama user dan alamat
emailnya jika emailnya belum ada.
Untuk melakukan ini, kita akan membutuhkan pengecekan
untuk melihat sejumlah baris yang mengembalikan query nol
Untuk melakukan ini, kita akan gunakan sebuah fungsi helper
yang disediakan library database yang disebut num_rows.
21
22
Interaksi Database
Database adalah tulang punggung di belakan aplikasi web.
Tanpa sebuah database, anda tidak memiliki tempat untuk
menampung semua data anda dan query SQL dapat menjadi
panjang dan rumit untuk mengetikkannya.
Codeigniter memberi kita cara yang cemerlang tetapi
sederhana untuk berinteraksi dengan database kita.
Library database juga membuat perubahan antara jenis
database dari MySQL ke Oracle misalnya menjadi lebih
mudah, karena bertindak sebagai sebuah pembungkus dan
menyediakan banya fungsi bagi kita untuk menggunakannya
pada database.
23
Memuat Library
Memuat Library Database sedikit berbeda dari memuat library
lainnya
Hal ini karena besarnya dan disamping itu dalam sebuah folder
yang berbeda, tidak seperti library lain
24
Melakukan Query Sederhana
Code igniter memberi kita sebuah fungsi yang dapat melempar
sebuah Query SQL dan query dapat dijalankan pada database.
25
Mengembalikan Nilai
Anda dapat memberikan fungsi $this->db->query() ke sebuah
variabel.
Anda kemudian dapat menjalankan sejumlah fungsi helper
pada variabel dalam rangka untuk mengembalikan data dalam
format yang berbeda.
Contoh:
26
Mengembalikan Hasil Objek
Dalam kasus ini, mengembalikan hasil akan mengembalikan array dari
objek, atau array kosong jika query gagal.
Anda biasanya akan menggunakan fungsi ini dalam sebuah foreach loop.
27
28
Mengembalikan Sebuah Objek Baris
Jika query anda hanya diharapkan untuk mengembalikan hasil
tunggal, anda harus mengembalikan baris menggunakan fungsi
berikut.
Baris dikebalikan sebagai objek.
29
30
Hasil Fungsi Helper
Disamping fungsi helper yang membantu untu mengembalikan
dataset dengan cara yang berbeda, ada beberapa fungsi helper yang
lebih umum lainnya.
Jumlah baris yang dikembalikan
Digunakan dalam cara yang sama seperti fungsi helper lainnya, ini
akan mengembalikan jumlah total dari baris yang dikembalikan dari
sebuah query. Perhatikan contoh berikut:
Hasil Bebas
Fungsi ini akan membuang resource ID yang berkaitan dengan
query anda dan membebaskan memory yang berkaitan.
31
Record Aktif
Active Record dalam codeigniter sangat berbeda dengan AR,
anda mungkin menemukan Rail atau framework lainnya.
Cara Active Record dalam codeigniter berkerja adalah anda
membangun query anda menggunakan fungsi yang berbeda.
Untuk query yang mudah, anda mungkin hanya perlu untuk
menggunakan satu atau dua fungsi, tetapu beberapa dari anda
mungkin perlu menggunakannya lebih sebagai contoh, jika
anda harus mencari kondisi tertentu, seperti dimana sebuah
nama user dan password adalah sama.
32
Memilih Data
Semua fungsi dalam bagian ini akan membangun query SQL
SELECT.
Semua dari SQL dalam bagian ini adalah MySQL, system
database lain mungkin sedikit berbeda..
$this->db->get();
$this->db->get_where();
$this->db->select();
33
Memasukkan Data
Memasukkan data menggunakan Active Record adalah sebuah
proses yang sederhana, dan disana hanya dua fungsi yang
anda mungkin butuh untuk gunakan dalam permintaan untuk
memasukkan data dalam database anda.
$this->db->insert();
$this->db->set();
34
Updating Data
Update data adalah bagian yang sangat penting dari setiap
aplikasi web.
Codeigniter membuat ini benar-benar mudah untuk dilakukan.
Fungsi update bekerja di sebagian besar dengan cara yang
sama seperti fungsi insert.
$this->db->update();
35
Hapus Data
Anda dapat menghapus data daru tabel dengan bebagai
macam cara.
Anda juga dapat menghapus field dari sebuah database atau
mengosongkan sebuah database.
$this->db->delete();
36
Akhir Modul 6
Local Training for IT Capacity Building
for Central & Local Government
Otentikasi User
MODUL 7
Ikhtisar Modul
2
Otentikasi User
Otentikasi user adalah bagian penting dari aplikasi web apapun;
hal ini juga penting untuk anda ketahui bagaimana menangani
otentikasi user anda sendiri, tanpa bergantung pada pihak
ketiga seperti Twitter dan Facebook
4
Ketika sudah selesai, kita perlu mengedit file konfigurasi
database.
Kita melakukannya dengan membuka file
/system/application/config/database.php dan edit baris berikut
sampai benar mencerminkan rincian anda sendiri:
6
Fungsi Index
Fungsi berikut yang kita perlukan untuk membuat fungsi index.
Ini akan cukup mudah, karena semua yang perlu kita lakukan adalah
memeriksa untuk melihat apakan user masuk log atau tidak dan
menunjukkan mereka baik dashboard atau halaman login yang
sesuai.
Lihat kode berikut ini:
Details view
Anda juga akan melihat tampilan dengan nama 'details' untuk user jika mereka ke
halaman yang membutuhkan otentikasi tetapi mereka tidak terotentikasi.
Buat folder baru dalam /system/application/views/ beri nama accountkita akan
gunakan folder ini untuk menjaga semuanya terorganisasi.
Kemudian buat file dalam folder tersebut beri nama details.php file ini yang
akan kita gunakan untuk menampilkan ke pengguna pesan pertanyaan untuk
login atau registrasi account.
8
9
Fungsi Dashboard
Fungsi ini memberikan kita masalah kecil untuk diatasi.
Kita ingin dapat memanggil fungsi ini dari fungsi lain dalam class, seperti
yang telah kita lakukan dalam fungsi index.
Dalam kasus ini kita sudah memeriksa untuk melihat apakah user login atau
tidak, sehingga kita mungkin tidak menginginkan ini untuk dilakukan duak
kali.
Untuk mengatasi masalah ini, kita harus melempat bolean TRUE ke fungsi,
seperti yang telah kita lakukan sebuah pengecekan seperti yang anda lihat
dalam fungsi sebelumnya.
Mari kita lihat fungsi dashboard berikut.
10
Dashboard view
File view dashboard adalah file HTML sederhana.
Kita tampilkan tag heading dan menjelaskan ke user apa yang mereka
lihat. Kita juga menyediakan link logout.
Buat file baru dalam folder /system/application/views/account/ beri nama
dashboard.php, dan masukkan kode berikut ini:
11
12
Fungsi Login
Selanjutnya, kita akan bangun fungsi login.
Hal ini memiliki lebih banyak kejadian sehingga kita akan
melangkah satu tahapan waktu.
13
Form Validasi
Hal pertama yang kita lakukan adalah mengatur beberapa
aturan validasi form
Anda akan melihat bahwa kita menyertakan beberapa callback
dalam aturan.
Callback adalah sebuah fungsi kustom yang kita tulis untuk
memvalidasi isi dari field form
Kita menjalankan semua XSS filter untuk memastikan bahwa semua
proses adalah aman.
Kita juga menetapkan dua variable class untuk username dan
password.
Hal ini agar kita dapat mudah mengakses username dan
password dalam pengecekan callback password, selama anda
hanya dapat mengirimkan satu parameter ke sebuah callback
nilai dari field form.
14
Form Validasi (lanjut)
15
Password check
Pengecekan Password melihat username dan password secara
bersamaan, untuk memastikan password yang benar diberikan
pada username.
16
Menjalankan Validasi
Hal berikutnya yang kita lakukan adalah untuk memeriksa
apakah validasi form telah berjalan sesuai proses atau belum.
Jika iya, hal ini berarti bahwa foem yang telah disampaikan dan
kita harus memproses informasinya. Kita seharusnya
menampilkan form ke user.
17
Login view
Buat sebuah file dengan nama login.php dalam sub direktori
view account, dan tambahkan kode berikut:
18
Login View (lanjut)
19
Success view
Buat file baru dalam sub direktory account dari viewberi nama
success.php.
Masukkan kode berikut ini dalam file:
20
Fungsi Register
Fungsi Register bekerja dengan cara yang sama seperti fungsi
login
Kita akan membaginya sama seperti yang kita lakukan pada
fungsi login
21
Validasi Form
Berikut adalah dafatar dari aturan validasi form yang kita tetapkan untuk
form register.
Sekali lagi semuanya dimaksukkan melalui XSS filter untuk memastikan
semua kemanannya.
22
Pengecekan User Yang Ada
Callback yang kita gunakan untuk memeriksa username tidak
sedang digunakan, tidak terlalu berbeda dengan callback yang
digunakan dalam fungsi login.
23
24
Menjalankan Validasi
Hal selanjutnya yang perlu dilakukan adalah memeriksa apakah routine validasi
sedang berjalan. Jika tidak, kita akan meneampilkan ke user tampilan register.
Jika sedang berjalan, maka kita akan bertindak untuk meregister akun user.
25
Register view
Buat file baru dalam
direktori account dengan
nama register.php dan
masukkan kode berikut
ini kedalam file baru :
26
Register view (lanjut)
Form registrasi harus muncul serupa denan yang ditampilkan
pada screenshot berikut:
27
Error view
Kita tidak perlu sebuah file tampilan untuk banyak kesalahan untuk fungsi login, tetapi
kita lakukan untuk fungsi register.
Dalam skenario lain., hal itu tidak seperti yang akan orang lihat untuk kesalahan ini,
karena jika aplikasi tidak terkoneksi ke database codeigniter akan menampilkan error.
Namun, kita akan menutup segala kemungkingan. Membuat file batu dalam direktori
view account dengan nama index.php. Berikut isi filenya:
28
Fungsi Logout
Seperti halnya registrasi dan login, kita juga ingin mengijinkan
user kita untuk log out.
Berikut ini adalah cara kita melakukannya:
29
Logout view
Buat file baru sekali lagi dalam direktori view accout - dengan
nama logout.php dan masukkan kode berikut ini kedalamnya:
30
Tampilan logout akan muncul seperti yang ditampilkan pada
screenshot:
31
Kode Model
Model adalah sebuah potongan yang sangat penting dari
puzzle.
Jika anda mencoba untuk meregister sebuah akun user anda
akan melihat sebuah pesan kesalahan, karena model sekarang
tidak ada.
Buat file baru dalam direktori /system/application/models/, dan
beri nama account_model.php.
32
Model constructor
Model constructor akan terlihat seperti ini. Hal ini sangat
sederhana seperti pemanggilan sederhana pada parent class
construct dan memuat library database.
33
Membuat Fungsi
Membuat fungsi adalah sesederhana mendapatkannya,
terimakasih pada implementasi Codeigniter Active Record.
Kita dapat sederhana mengambil array melemparkannya dan
memasukkannya dalam database dengan menggunakan fungsi
insert().
34
Fungsi Login
Fungsi login membuat sebuah session baru untuk user dan
menambahkan usernama dan boolean logged_in, diset ke
TRUE
Sekali lagi, ha lini dibuat luar biasa mudah dengan CodeIgniter
Session library.
35
36
Menggunakan Twitter oAuth
oAuth adalah sebuah protokol terbuka untuk keamanan
otentikasi user melalui APIs.
Hal ini mengijinkan user untuk mendapatkan batasan akses ke
website dengan menggunakan pengenal Twitter.
Hal ini kedengarannya metode dari otentikasi user dan tidak
mengambil serlalu banyak perkerjaan untuk mendapatkannya.
Twitter oAuth digunakan oleh ratusan dari pihak ketiga client
twitter dan kombinasi hanya untuk memberikan anda ide
seberapa bergunanya hal tersebut.
37
38
Registrasi Aplikasi Twitter
Sebelum kita menuliskan kode apapun, kita perlu untuk
mendafatarkan sebuah aplikasi dengan twitter.
Hal ini akan memberikan kita dua kode akses yang kita
butuhkan. Yang pertama adalah sebuah consumer key, dan
kedua adalah sebuah secret key.
Keduanya digunakan untuk identifikasi aplikasi kita, sehingga
jika seseorang posting pesan ke twitter melalui aplikasi kita,
nama aplikasi kita akan tampil disamping tweet user.
Untuk mendaftarkan aplikasi baru dengan twitter, anda perlu
mengunjungi http://www.twitter.com/apps/new. Anda akan
diminta untuk foto aplikasi anda dan informasi lain, seperti URL
website, callback URL dan deskripsi terkait lainnya.
39
40
Library base class
Kode berikut adalah versi dari base class dengan semua guts pulled
out.
Sederhana untuk memuat library oAuth dan men-setup sekumpulan
variable untuk menyimpan informasi tertentu didalamnya.
Dibawah ini, saya akan membahas untuk setiap variabel.
41
42
Library constructor
Library constructor perlu diketahui apakah kita memiliki sebuah
otentikasi user atau tidak.
Pertama, kita setup sebuah instance baru dari class oAuth
Consumer, Membuat rincian aplikasi kita.
Kemudian kita cek untuk melihat apakah oAuth token telah
dilempat ke fungsi.
Jika mereka memiliki, hal itu berarti user tersebut telah dikembalikan
dari twitter;
Jika tidak, mereka hanya datang ke situs tersebut dan siap untuk
mengklik untuk men-otentikasi sendiri.
Kami melewati data ke fungsi sebagai sebuah array, karena ini
adalah satu-satunya jalan, codeigniter memungkinkan kita
melakukannya dengan $this->load->library function.
43
44
Meminta Token User
Hal pertama yang kita perlu lakukan untuk otentikasi user adalah untuk
meng-query twitter untuk meminta token.
Token ini digunakan untuk otentikasi user agar membiarkan twitter tahu
bahwa mereka datang dari aplikasi kita.
Mari kita lihat fungsi untuk meminta token:
45
Fungsi HTTP
Karena ini merupakan ketergantungan yang cukup besar untuk fungsi
sebelumnya, kita akan pergi melalui pembangunan disini.
Fungsi ini sedikit lebih komplek dibandingkan lainnya. Kita gunakan
cURL untuk menginisiasi request ke Twitter dan mengembalikan
semua nilai dari twiiter.
Jika anda sudah memiliki pengetahuan cURL, kemudian anda dapat
melewatkan penjelasan setelah kode blok berikut.
46
Fungsi HTTP (lanjut)
47
Fungsi Parse
Fungsi yang tergantung selanjutnya adalah salah satu yang
mengurai respon dari twitter ke dalam sebuah array yang dapat
benar-benar kita gunakan.
48
Fungsi Controller index
Seperti semua controller memiliki fungsi default yang disebut index,
ini adalah dimana kita akan memulai kode kita.
Fungsi index akan mendapatkan request token dari twitter dan
kemudian membangun sebuah URL darinya
URL akan pergi ke twitter dengan saru dari token yang melekat,
sehingga twitter mengetahui user berasal dari aplikasi kita.
Kita akan menyimpan token ini dalam sebuah session sehingga kita
dapat memverifikasi user ketika mereka kembali ke aplikasi kita dari
twitter.
49
50
get_authorize_URL function
Fungsi ini mengambil token yang dikirimkan kesana dan
manambahkannya ke Twitter URL. Ini cukup mudah.
51
52
Merubah Callback URL Anda
Setelah user mengunjungi aplikasi anda, anda dapat
memverifikasi mereka access token baru dengan twitter untuk
memastikan bahwa mereka datang dari twitter dan tidak
mencoba untuk menipu token untuk mendapatkan akses yang
tidak sah ke aplikasi anda.
Untuk hal ini, kita perlu untuk merubah callback URL sedikit.
Kita akan membuat sebuah fungsi dalam Controller twitter ikuta
yang akan menangani semua hal ini; ini akan
disebutaccess()ini adalah dimana anda perlu merubah
callback URL anda.
Seharusnya akan terlihat seperti ini:
53
54
File view
File view yang kita gunakan sangat sederhana.
Kita melempar variabel $token ke file view; ini selanjutnya echo
nama tampilan user dalam judul dari halaman.
55
56
Mendapatkan access tokens
Mendapatkan access token dari Twitter membutuhkan dua
fungsi baru
Pertama, adalah fungsi get_access_tokens(), dimana hampir
identik dengan fungsi get_request_token().
Kemudian fungsi baru yang disebut parse_access() ini
banyak sekali kemiripan dengan fungsi parse_request(),
meskipun cara kerjanya sedikit berbeda.
57
get_access_tokens()
58
parse_access()
Fungsi ini mengambil pengembalian strang dari Twitter dan
membaginya pada setiap & dan =, membaginya kedalam
oasangan dari array keys dan values.
Fungsi kemudian mengembalikan array untuk digunakan dalam
class.
59
Logging out
Ketika user keluar dari aplikasi anda, anda perlu untuk
menghancurkan semua data session.
Hal ini dimaksudkan agar anda dapat dengan mudah membuat
sebuah session baru dari mereka, jika mereka ingin login lagi
dengan status bersih.
Pergi kedalam kode Controller anda sehingga anda dapat
mengaksesnya dari URI index.php/twitter/logout/.
60
File view untuk halaman ini cukup sederhana.
Buat file baru dalam folder view Twitter beri nama logout.php.
61
Fungsi Debug
Kita harus menambahkan fungsi debug untuk kemudahan
penggunaan.
Ketika fungsi debug dipanggil, kita ingin echo out URL dai API
terakhir yang dipanggil, dan kode status HTTP.
62
Menggunakan Facebook Connect
Facebook Connect adalah seperti Twitter oAuth, tetapi untuk
akun Facebook.
Tidak menggunakan oAuth protocol, sehingga kerjanya nampak
sedikit berbeda untuk developer.
Untuk user bagaimanapun juga berbeda secara marjinal.
Seperti dalam Twitter oAuth, users tidak perlu memasukkan
kredensial akun mereka ke website anda atau aplikasi
semuanya ditangani oleh Facebook.
63
64
Download Library Client
Ketika anda berada pada halaman aplikasi anda menampilkan semua
informasi aplikasi anda, scroll kebawah halaman untuk melihat
sebuah link ke download Library Client.
Setelah mendownloadnya, kemudian extrak.
Ada dua folder didalam folder facebook-platform, footprints dan php.
Kita hanya menggunakan folder php saja.
Buka folder PHP, terdapat dua file disini kita tidak perlu,
facebook_desktop.php dan facebook_mobile.php anda dapat
menhapusnya.
Akhirnya, kita dapat menyalin folder ini ke aplikasi kita. Tempatkan
pada folder system/application/libraries, dan kemudian ubah nama
folder menjadi facebook.
Hal ini membantu kita untuk menyimpan kode kita rapi dan terurut
dengan benar.
65
CodeIgniter Wrapper
Sebelum kita memulai pengkodean, kita perlu mengetahui apa
yang kita butuhkan untuk kode untuk membuat Facebook Client
Library bekerja dengan instalasi CodeIgniter installation kita.
Library Wrapper kita perlu untuk intansiasi class facebook
dengan API key kami dan Secret Application Key. Kita juga
menginginkannya untuk membuat sebuah session untuk user
ketia mereka login. Jika sebuah session ditemukan tetapi user
tidak terotentikasi, kita perlu menghancurkan session.
Anda harus membuat file baru dalam folder
system/application/libraries/ folder, beri
namaFacebook_connect.php. Disinilah kode library yang
diberikan berikutnya harus ditempatkan.
66
Class Base
Clas base untuk Facebook Connect Wrapper Library adalah
sangat sederhana:
67
Class constructor
Class constructor kami harus melakukan beberapa hal untuk
memungkinkan kita untuk mengotentikasi user anda
menggunakan Facebook Connect.
68
_session();
Fungsi ini mengelola session pengguna codeigniter. Perhatikan kode
berikut ini:
69
Controller
Controller yang kita gunakan untuk otentikasi facebook akan perlu
memanggil facebook connect wrapper, mengatur beberapa variabel lokal
untuk beberapat informasi user dan memuat sebuah file view.
File view akan berisikan elemen spesial HTML untuk menampilkan
informasi facebook.
Tag ini dikenal sebagai Facebook Markup Language (FBML).
70
Controller (lanjut)
71
File View
File View adalah sangat penting untuk kita dan perlu beberapa
penjelasan
Seperti yang anda harapkan dari sebuah aplikasi facebook
connect, logo akan ditempatkan pada halaman web.
Sebuah pop-up box akan muncul ketika anda men-klik nya,
mengijinkan anda untuk log in ke facebook dan mengijinkan akses
ke aplikasi.
Untuk melakukan hal ini, anda perlu tahu FBML. FBML adalah
superset dari HTML dan adds on ke fitur HTML, dasarnya
membiarkan anda mudah menambahkan rincian tertentu facebook
Contoh aplikasi yang sangat sederhana, tapi memberi anda
sekilas tentang FBML, memberikan gambaran tentang apa yang
dapat dilakukan dan bagaimana melakukannya.
72
File View (lanjut)
73
74
Akhir Modul 7
Local Training for IT Capacity Building
for Central & Local Government
Keamanan Aplikasi
MODUL 8
Ikhtisar Modul
Pertahanan CodeIgnite
Kebijakan Password yang Kuat
Menyimpan Password secara aman
Keamanan Database
Cross-site Scripting (XSS)
Update System
2
Kemanan Aplikasi
Memastikan bahwa aplikasi anda adalah seaman mungkin seperti
kemungkinan manusia adalah tidak berarti perbuatannya.
Ada begitu banya cara agar aplikasi anda dapat berkompromi bahwa sering
kali sulit untuk menjaga aplikasi anda terkunci seluruhnya sepanjang waktu.
Namun, terdapat langkah-langkah yang memudahkan anda untuk
mengurangi kemungkinan siapa saja dengan beberapa pengetahuan teknik
untuk mendapatkan akses yang tidak sah ke aplikasi anda, atau bagian dari
atau semua dari database anda.
CodeIgniter menangani beberapa langkah, anda tidak perlu melakukan
apapun untuk membuat mereka, mereka akan selalu berada disana
Namun beberapa dari pertahanannya butuh untuk diaktifkan, atau sebuah
tindakan diperlukan untuk mengambil keuntungan darinya.
Kami telah menyentuhnya dengan XSS Filter: dapat diaktifkan secara
permanen atau dapat digunakan atas dasar kasus per kasus untuk setiap
field form.
Pertahanan CodeIgniter
CodeIgniter datang dengan built-in security filter, beberapa dari
filter adalah dengan konvensi dan beberapa membutuhkan
konfigurasi.
4
Keamanan URI
Sebuah URI adalah semua yang datang seterlah alamat web anda. Ketika
menggunakan CodeIgniter, anda akan menerima sebuah URI yang terlihat seperti
ini:
Global data
CodeIgniter tidak mengijinkan query string untuk digunakan secara
default, class input dan security tidak diset $_GET array selama
inisialisasi sistem
Semua variabel global adalah tidak diset selama inisialisasi sistem,
kecuali yang ditemukan dalam $_COOKIE dan $_POST arrays.
Hal ini adalah efektif sama sperti mematikan register_globals.
Global variabel selalu menjadi resiko keamaan yang sangat tinggi,
sebagai variabel global dapat ditimpa dengan menggunakan script yang
berbahaya.
Hal ini mengijinkan pengguna untuk merubah jalan aplikasi anda
dimaksudkan untuk menjalankan atau merubah cara kerjanya.
Sebagai contoh, sebuah variabel global ditimpa dapat mengijinkan user
untuk memotong proses pendaftaran dan mendapatkan akses ke aplikasi
anda
6
Praktek Terbaik
Sebelum menerima semua jenis dari data ke dalam aplikasi
anda, entah itu dari kiriman form, data COOKIE, data URI, atau
bahkan data SERVER, anda dianjurkan oleh panduan user
untuk mengikuti tiga langkah panduan:
1. Filter data seolah-olah tercemar
2. Validasi data untuk memastikan bahwa itu seperti yang diharapkan
(panjang yang benar, jenis, ukuran dan seterusnya)
3. Escape data sebelum memasukkannya ke database anda
Filtering data
Kami telah menyinggung XSS filter sebelumnya. CodeIgniter
menyediakan Filter XSS yang sangat baik yang memfilter data
dari tiap teknik umum yang digunakan untuk memasukkan kode
JavaScript atau jenis dari kode lain dalam aplikasi anda.
Anda dapat memfilter semua jenis data melalui Filter XSS
dengan membukanya pada file
/system/application/config/config.php dan setting variabel
berikut:
8
Validasi
Form Validation Library adalah tool terbaik yang CodeIgniter
tawarkan untuk memastikan bahwa data yang dikirimkan
adalah dari jenis yang tepat, ukuran dan bahkan panjangnya.
Escaping data
Kami telah menyentuh pada fungsi escaping data yang
diciptakan untuk porsi Record aktif dari library database.
Anda juga dapat melakukan escape data dengan menggunakan
fungsi :
10
Kebijakan Password Yang Kuat
Anda harus memastikan bahwa user anda selalu memiliki sebuah
password yang kuat.
Hal tersebut sangat mudah untuk membuat sebuah kebijakan password
dengan CodeIgniter, dengan menggunakan Form Validation Library
Sebagai contoh, anda dapat men-set panjang minimum dan maksimum
dari kolom password. Anda dapat juga mudah memastikan bahwa data
yang dimasukkan dalam kolom password dan konfirmasi password
adalah sama.
Sebuah contoh kebijakan password dapat berupa:
Panjang Minimum 6 Karakter
Panjang Maksimum 12 Karakter
Harus berupa alpha-numeric karakter, bukan symbols
Harus bukan password yang sangat umum digunakan
Harus bukan nama orang tersebut
Harus bukan nama user orang tersebut
11
12
Anda akan melihat bahwa kita menggunakan tiga callback.
not_obvious() akan berupa sebuah fungsi untuk menentukan jika
password adalah satu dari password yang sering digunakan.
not_name() akan menentukan apakah password adalah nama orang
tersebut atau bukan.
not_username() akan menentukan apakah password adalah nama
user dari orang tersebut atau bukan.
13
14
15
16
17
18
Menyimpan Hashes
Menyimpan password sebagai hash mungkin adalah cara
termudah untuk menyimpan password pengguna, dan
digunakan oleh banyak website
Kebanyakan developer akan langsung menggunakan sebuah
hash MD5 karena hal tersebut adalah yang paling diketahui dari
jenis hash yang tersedia untuk developer.
Namun, saya merekomendasikan anda menggunakan hash
sha1, karena lebih panjang dari MD5 dan telah terbukti sulit
untuk menemukan plaintext dibandingkan dengan MD5 hash.
19
Keamanan Database
Hal lain bagian yang sangat penting dari keseluruhan
keamanan apliaksi adalah database anda.
Pastikan semua query adalah benar, semua data harus sudah
lolos sebelum anda menggunakannya dalam sebuah query,
dan jangan pernah mempercayai apapun inputan pengguna
akan semua bantuan, dengan menjaga database anda.
20
Escape queries
Kita telah berada pada method dari codeigniter yang digunakan
untuk escape data anda, pada awal bab ini.
Kali ini akan kita bahas bagaimana lolos dari bagian yang
berbeda dari sebuah query tanpa Codeigniter, karena ini adalah
kemampuan yang harus dimiliki setiap developer.
Pertama, semua nama tabel database dan nama field harus
lolos dengan menggunakan backtics (`).
Hal ini juga menghindari masalah dimana nama adalah kata
yang diperuntukkan. Hal ini sangat berguna ketika
menggunakan klausa WHERE yang digunakan pada field id
primary key. Berikut ini contohnya:
21
22
Membatasi Akses Akun
Anda harus membuat sebuah akun pengguna baru untuk
database anda setiap kali aplikasi baru memiliki kebutuhan
khusus.
Sebagai contoh, jika anda menggunakan akun root untuk
aplikasi tetapi anda hanya melakukan operasi, read, write dan
delete kemudian anda tidak membutuhkan kemampuan untuk
create, edit atau remove tabel.
Alasan dibelakang ini adalah jika seseorang ingin mendapatkan
akses ke database anda dan mampu menjalankan query,
mereka tidak akan mampu menghapus tabel, seperti MySQL
(atau apapun database yang anda gunakan) akan membatasi
jenis query dari query yang akun pengguna dapat buat.
23
Kasus utama untuk titik ini akan menjadi SQL injection. SQL injection
adalah dimana sebuah string seperti OR, or =, dimasukkan dalam
sebuah form atau URL dimana hal tersebut akan dijalankan pada
database.
Hal ini biasanya akan mengembalikan pesan error yang dapat digunakan
pengguna jahat untuk kembali menggali dari bagian atau semua dari
database anda
Jika anda belum dapat secara benar meloloskan query anda kemudian
sebuah pengguna dapat menjalankan sebuah query seperti ini pada
database anda:
24
Cross-site scripting (XSS)
Cross-site scripting (XSS) adalah sebuah jalan untuk
memasukkan kode JavaScript jahat kedalam aplikasi anda.
Jenis eksploit ini dapat digunakan untuk membajak cookie user,
yang dapat secara efektif membiarkan pengguna
menginjeksikan kode mengambil ID tiap user pada website
anda, secara mudah dengan menghubungkan mereka ke situs
anda dengan kode yang ditambahkan didalamnya.
25
26
Setelah anda mengubah nama folder application dan system dan
memindahkan keduanya (application keluar dari system , dan
system keluar dari web root), buka index.php dan ubah variabel
berikut:
27
Selalu up-to-date
Ingatlah untuk memperbarui aplikasi codeigniter dan versi dari
PHP (jika memungkinkan) untuk selalu up-to-date dan menutupi
patch keamanan.
Dengan menghapus folder system anda keluar dari web root,
anda mampu untuk menggunakan satu folder system untuk
semua aplikasi anda, hal ini membuatnya lebih mudah untuk
meng-upgrade beberapa aplikasi sekaligus tanpa repot sama
sekali.
Mengawasi website codeigniter dan twitter untuk update versi
terbaru.
28
Akhir Modul 8