Anda di halaman 1dari 14

BAB 2

KEAMANAN APLIKASI WEB


2.1 PENYANDIAN DATA ( ENKRIPSI, ENCODING, HASHING)
Bagi yang sering melakukan teknik sql injection pasti sering menemukan password dalam
bentuk hash, hash erat kaitannya dengan enkripsi
1. Apakah yang di maksud dengan hash ?
Hash adalah hasil enkripsi dari sebuah password atau informasi yang dianggap penting.
Sedangkan Enkripsi adalah proses mengamankan suatu informasi dengan membuat informasi
tersebut tidak dapat dibaca tanpa bantuan pengetahuan khusus.
2. Apakah perbedaan hash, enkripsi, dan Encoding ?
Ada beberapa tipe dalam teknik kriptografi diantaranya :
Enkripsi:
Tujuan encryption adalah untuk merubah data agar dapat di jaga kerahasiaannya. misalkan
untuk mengirim sebuah pesan rahasia yang hanya orang – orang tertentu saja yang bisa
membacanya. Metode ini tidak mengacu kepada usability (kemampuan untuk digunakan) akan
tetapi lebih mengacu kepada kemampuan untuk memastikan data tersebut tidak dapat digunakan
orang lain selain dari yang telah ditentukan.
Encryption merubah data ke dalam format lain dengan menggunakan skema (terbatas) atau
bisa dikatakan hanya orang – orang tertentu saja yang bisa mereverse / membalikan data tersebut
ke dalam bentuk normal teks. Untuk membukanya diperlukan fungsi cipher text, algoritma tertentu
dan sebuah kunci. Contoh : RSA, AES
Contoh Karakter : RSA
Encoding:
Tujuan encode adalah untuk merubah data sehingga data tersebut dapat digunakan oleh
sistem lainnya secara benar dan aman, misalkan : Dapat dikirim via e-mail ataupun ditampilkan di
halaman web. Metode ini bukan untuk menjaga kerahasiaan informasi, akan tetapi lebih mengarah
untuk memastikan bahwa data dapat digunakan secara benar.
Encode merubah data ke dalam format yang berbeda menggunakan skema umum, sehingga
data tersebut dapat dengan mudah di decode kembali. Metode ini tidak membutuhkan kunci khusus
untuk mendecode data, hal yang dibutuhkan hanyalah algoritma yang digunakan untuk menencode
data tersebut.
Tidak membutuhkan alat bantu untuk membacanya. Karena biasanya sudah di include kan
ke dalam program tersebut. Misal PHP yang langsung bisa membaca encoding base64 anda dengan
hanya menggunakan fungsi base64_decode(). Contoh: Base64, ASCII

Contoh Karakter : Base64

S8td0s5NTk/x4kZNHp6Ud9tyjAfQIiOywcFTFay+jfLUSJ9EaKcx4=
Hash:
Tidak digunakan untuk dijalankan/script tapi hanya untuk di baca / diketahui. Hanya
digunakan untuk menyimpan data-data tertentu yang biasanya penting. Misal: password. Beberapa
tipe - tipe hash :
1. DES(Unix)
[+] Digunakan di Linux dan sejenisnya.
[+] Panjang : 13 Karakter.
[+] Deskripsi : Dua karakter pertama adalah salt (Karakter acak, di contoh kita saltnya adalah string
"Iv.") kemudian diikuti oleh Hashnya.
[+] Contoh : IvS7aeT4NzQPM

2. Domain Cached Credentials


[+] Digunakan untuk mencache password-password domain windows.
[+] Panjang : 16 bytes (32 Karakter)
[+] Algorithm : MD4(MD4(Unicode($pass)).Unicode(strtolower($username)))
[+] Contoh : Admin:b474d48cdfc4974d86ef4d24904cdd91
3. MD5(Unix)
[+] Digunakan di Linux dan sejenisnya.
[+] Panjang : 34 Karakter.
[+] Deskripsi : Hash dimulai dengan tanda $1$ kemudian dilanjutkan dengan salt (sampai dengan
8 karakter acak, di contoh kita saltnya adalah string "12345678") kemudian dilanjutkan dengan
satu karakter lagi $ , kemudian diikuti oleh Hashnya.
[+] Algorithm : Sebenarnya ini adalah loop yang memanggil algoritma md5 sebanyak 2000 kali.
[+] Contoh : $1$12345678$XM4P3PrKBgKNnTaqG9P0T/

4. MD5(APR)
[+] Digunakan di Linux dan sejenisnya.
[+] Panjang : 37 Karakter.
[+] Deskripsi : Hash dimulai dengan tanda $apr1$ , kemudian dilanjutkan dengan salt (sampai
dengan 8 karakter acak, di contoh kita saltnya adalah string "12345678"), kemudian dilanjutkan
dengan satu karakter lagi $ , kemudian diikuti oleh Hashnya.
[+] Algorithm : Sebenarnya ini adalah loop yang memanggil algoritma md5 sebanyak 2000 kali.
[+] Contoh : $apr1$12345678$auQSX8Mvzt.tdBi4y6Xgj.

5. MD5(phpBB3)
[+] Digunakan di phpBB 3.x.x.
[+] Panjang : 37 Karakter.
[+] Dekripsi : Hash dimulai dengan tanda $H$ kemudian diikuti dengan satu karakter (paling
sering angka "9") kemudian diikuti dengan salt (8 karakter acak, di contoh kita saltnya adalah
string "12345678"), kemudian diikuti oleh Hashnya.
[+] Algorithm : Sebenarnya ini adalah loop yang memanggil algoritma md5 sebanyak 2048 kali.
[+] Contoh : $H$9123456785DAERgALpsri.D9z3ht120

6. MD5(Wordpress)
[+] Digunakan di Wordpress.
[+] Panjang : 34 Karakter.
[+] Deskripsi : Hash dimulai dengan tanda $P$ , kemudian diikuti dengan satu karakter (Paling
sering huruf "B"), kemudian diikuti dengan salt (8 karakter acak, di contoh kita saltnya adalah
string "12345678"), kemudian diikuti oleh Hashnya.
[+] Algorithm : Sebenarnya ini adalah loop yang memanggil algoritma md5 sebanyak 8192 kali.
[+] Contoh : $P$B123456780BhGFYSlUqGyE6ErKErL01

7. MySQL
[+] Digunakan di MySQL versi lama.
[+] Panjang : 8 bytes.
[+] Deskripsi : Hash yang terdiri dari dua DWORD, masing-masing tidak melebihi nilai 0x7fffffff.
[+] Contoh : 606717496665bcba

8. MySQL5
[+] Digunakan di MySQL Versi baru.
[+] Panjang : 20 bytes.
[+] Algorithm : SHA-1(SHA-1($pass))
[+] Contoh : *E6CC90B878B948C35E92B003C792C46C58C4AF40
[+] Catatan : Hash harus dimuat ke program tanpa tanda bintang (*) yang terdapat di awal setiap
hash.

9. RAdmin v2.x
[+] Digunakan di Aplikasi Remote Administrator v2.x.
[+] Panjang : 16 bytes.
[+] Algorithm : Password diisi dengan nol dengan panjang 100 bytes, kemudian seluruh string
dihash dengan algoritma MD5.
[+] Contoh : 5e32cceaafed5cc80866737dfb212d7f

10. MD5
[+] Digunakan di phpBB v2.x, Joomla versi di bawah 1.0.13 dan banyak forum dan CMS.
[+] Panjang : 16 bytes.
[+] Algorithm : sama seperti fungsi md5() di php.
[+] Contoh : c4ca4238a0b923820dcc509a6f75849b

11. md5($pass.$salt)
[+] Digunakan di WB News, Joomla Versi 1.0.13 keatas.
[+] Panjang : 16 bytes
[+] contoh : 6f04f0d75f6870858bae14ac0b6d9f73:1234

12. md5($salt.$pass)
[+] Digunakan di osCommerce, AEF, Gallery dan beberapa CMS.
[+] Panjang : 16 bytes.
[+] Contoh : f190ce9ac8445d249747cab7be43f7d5:12

13. md5(md5($pass))
[+] Digunakan di e107, DLE, AVE, Diferior, Koobi dan beberapa CMS.
[+] Panjang : 16 bytes.
[+] Contoh : 28c8edde3d61a0411511d3b1866f0636

14. md5(md5($pass).$salt)
[+] Digunakan di vBulletin, IceBB.
[+] Panjang ; 16 bytes.
[+] Contoh : 6011527690eddca23580955c216b1fd2:wQ6

15. md5(md5($salt).md5($pass))
[+] Digunakan di IPB.
[+] Panjang : 16 bytes.
[+] Contoh : 81f87275dd805aa018df8befe09fe9f8:wH6_S
16. md5(md5($salt).$pass)
[+] Digunakan di MyBB.
[+] Panjang : 16 bytes.
[+] Contoh : 816a14db44578f516cbaef25bd8d8296:1234

17. md5($salt.$pass.$salt)
[+] Digunakan di TBDev.
[+] Panjang : 16 bytes.
[+] Contoh : a3bc9e11fddf4fef4deea11e33668eab:1234

18. md5($salt.md5($salt.$pass))
[+] Digunakan di DLP.
[+] Panjang : 16 bytes.
[+] Contoh : 1d715e52285e5a6b546e442792652c8a:1234

20. SHA-1
[+] Digunakan dibanyak Forum dan CMS.
[+] Panjang : 20 bytes
[+] Algorithm: Sama dengan sha1() fungsi di PHP.
[+] Contoh : 356a192b7913b04c54574d18c28d46e6395428ab

21. sha1(strtolower($username).$pass)
[+] Digunakan di SMF
[+] Panjang : 20 bytes.
[+] Contoh : Admin:6c7ca345f63f835cb353ff15bd6c5e052ec08e7a

22. sha1($salt.sha1($salt.sha1($pass)))
[+] Digunakan di Woltlab BB
[+] Panjang : 20 bytes
[+] Contoh : cd37bfbf68d198d11d39a67158c0c9cddf34573b:1234

23. SHA-256(Unix)
[+] Digunakan di Linux dan sejenisnya.
[+] Panjang : 55 Karakter.
[+] Deskripsi : Hash dimulai dengan tanda $5$, kemudian diikuti salt (sampai dengan 8 karakter
acak, di contoh kita saltnya adalah string "12345678"), kemudian dilanjutkan dengan satu karakter
lagi $, kemudian diikuti hash sebenarnya.
[+] Algorithm : Sebenarnya ini adalah loop yang memanggil algoritma SHA-256 5000 kali.
[+] Contoh : $5$12345678$jBWLgeYZbSvREnuBr5s3gp13vqi...

24. SHA-512(Unix)
[+] Digunakan di Linux dan sejenisnya.
[+] Panjang : 98 Karakter.
[+] Deskripsi : Hash dimulai dengan tanda $6$, kemudian diikuti dengan salt (sampai dengan 8
karakter acak, dicontoh kita saltnya adalah string "12345678"), kemudian dilanjutkan dengan satu
karakter lagi $, kemudian diikuti hash sebenarnya.
[+] Algorithm : Sebenarnya ini adalah loop yang memanggil algoritma SHA-512 5000 kali.
[+] contoh : $6$12345678$U6Yv5E1lWn6mEESzKen42o6rbEm..
BAB 2.2

Validasi Input Alpha Numeric


Validasi adalah suatu upaya untuk mencocokkan sebuah data dengan kententuan yang telah
di tetapkan. Dalam konteks ini, validasi yang di maksudkan adalah validasi yang berada pada
sebuah halaman web lebih tepatnya lagi pada form input data sebelum berhahsil di proses. Validasi
pada sebuah form berguna untuk mencegah data yang tidak sesuai dengan ketentuan. Misalkan
saja form yang harus di isi adalah form no telp. Maka dengan demikian form tersebut seharusnya
adalah berisi sebuah angka dan buka huruf atau karakter lain. Untuk mencegah agar user tidak
sembarang menginput form, maka validasi ini berguna untuk memastikan data yang di input pada
form tersebut adalah benar. Oke berbicara validasi, kali ini sistemphp.com akan membagi beberapa
cara simpel yang dapat kamu gunakan untuk membuat validasi di php.

Validasi sangat diperlukan dalam sebuah aplikasi. Terkadang kita diharuskan membuat
sebuah form yang datanya tidak boleh dikosongkan, ataupun input yang format isiannya
ditentukan. Jika pengguna tidak memenuhi ketentuan pengisian form maka akan muncul
peringatan bahwa pengisian form tersebut masih belum valid dan harus diperbaiki sebelum
disubmit kembali.

Ada dua jenis validasi form di aplikasi web, diantaranya:

1. Validasi Sisi Client : Validasi dilakukan pada browser

2. Validasi Sisi Server : Setelah data diterima oleh server, pengecekan validasi data dilakukan oleh
program di sisi server

Validasi Angka dengan PHP

Berikut ini script php untuk memvalidasi angka dengan mudah, studi kasus yang di
gunakan yaitu form input no php.

1 <html>
2 <head>
3 <title>Validasi Angka PHP</title>
4 <meta content="validasi angka php" name="description">
5 <meta content="validasi,angka,php" name="keyword">
6 <head>
7 <body>
8 <center>
9 <h3>DEMO VALIDASI ANGKA PHP</h3>
10 <form action="" method="POST">
11 NOMOR HP
12 <input type="text" name="nomor_hp">
13 <input type="submit" name="submit">
14 </form>
15 <?php
16 if(isset($_POST['submit'])){
17 if(empty($_POST['nomor_hp'])) {
18 $hp = 'NO HP tidak boleh kosong';
19 } else if(!is_numeric($_POST['nomor_hp'])) {
20 $hp = 'NO HP harus angka';
21 } else if(strlen($_POST['nomor_hp']) != 12) {
22 $hp = 'NO HP harus berjumlah 12 angka';
23 } else {
24 $hp = 'NO HP berhasil di input';
25 }
26 echo $hp;
27 }
28 ?>
29 </center>
30 </body>
31 </html>

Pada script php di atas menggunakan fungsi php yaitu is_numeric, fungsi tersebut
mempunyai fungsi untuk mencek apakah nilai yang di input pada form adalah berupa nomor atau
angka. Dalam konsep pemrograman, angka atau nomor adalah bertipe integer.
Jenis-jenis Validasi
1. Kualifikasi Mesin, Peralatan dan Sarana Penunjang, terdiri dari :
• Design Qualification (DQ)/Kualifikasi Disain (KD)
• Installation Qualification (IQ)/Kualifikasi Instalasi (KI)
• Operational Qualification (OQ)/Kualifikasi Operasional (KO)
• Performance Qualification (PQ)/Kualifikasi Kinerja (KK)
2. Validasi Metode Analisa
3. Validasi Proses Produksi,
4. Validasi Proses Pengemasan
5. Validasi Pembersihan (Cleaning Validation)
Membuat Validasi Input Text pada Form dengan PHP
Input text merupakan elemen form yang paling banyak digunakan. Input text
memungkinkan pengguna memasukkan text pendek single line. Ini sesuai dengan kebanyakan tipe
data yang dibutuhkan form, misal nama, alamat, email, website, pekerjaan, nomor hp, dan masih
banyak lagi data-data yang bisa dimasukkan dengan input text.
Elemen input text pada form dapat dimasuki semua karakter yang ada pada keyboard
baik huruf, angka maupun simbol. Hal ini membuat input text sangat rawan kesalahan jika
dibutuhkan data yang benar-benar valid. Misal untuk nama kita hanya mengijinkan huruf kecil,
huruf besar, spasi dan titik jasa. Lalu pada input nomor hp kita hanya mengijinkan angka saja.
Untuk itu dibuat sistem validasi input text pada form sesuai dengan data yang dibutuhkan.

Berikut ini contoh aturan validasi terhadap input text pada form :

Field Aturan Validasi Isi

Nama Hanya huruf, titik dan spasi

Nomor Hanya angka saja

Email Sesuai dengan aturan alamat email, mengandung dot (.) dan at (@)

Website Sesuai dengan aturan alamat URL standar

Berikutnya kita akan membuat script untuk validasi txt dengan menggunakan fungsi-fungsi php
seperti preg_match() dan filter_var().
1. Validasi Nama

Dalam validasi nama aturan yang ditetapkan adalah menggunakan huruf kecil, huruf besar, titik
dan spasi. Untuk proses validasi digunakan fungsi preg_match() dengan regular expression.

Contoh validasi nama dengan fungsi preg_match() :

//mengambil data dari form


$nama = test_input($_POST["nama"]);
// cek validasi text input sesuai aturan yang ditetapkan
if (!preg_match("/^[a-zA-Z .]*$/",$nama)) {
$namaErr = "Hanya huruf , titik dan spasi yang diijinkan"; // tampilkan pesan error nama
$nama =""; //kosongkan variabel $nama
}
2. Validasi Nomor
Aturan validasi nomor adalah kebalikan dari nama, dimana data yang dimasukkan berupa
angka dan tidak diijinkan memasukkan huruf. Untuk proses validasi digunakan masih sama yaitu
menggunakan fungsi preg_match() dengan regular expression.

Contoh validasi nomor dengan fungsi preg_match() :


//mengambil data dari form
$nomor = test_input($_POST["nomor"]);
// cek validasi text input sesuai aturan yang ditetapkan
if (!preg_match("/^[0-9]*$/",$nomor)) {
$nomorErr = "Hanya angka yang diijinkan"; // tampilkan pesan error nomor
$nomor =""; //kosongkan variabel $nomor
}

3. Validasi Email
Untuk proses validasi Email kita gunakan fungsi filter_var dengan parameter
FILTER_VALIDATE_EMAIL. Cara ini lebih mudah dan simpel daripada harus membuat
regular expression jika menggunakan fungsi preg_match().

Contoh validasi email dengan fungsi filter_var():


//mengambil data dari form
$email = test_input($_POST["email"]);
// cek format email yang dimasukkan
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Format email tidak valid !"; //tampilkan pesan error email
$email=""; // kosongkan variabel $email
}
4. Validasi Website
Pada proses validasi website ada dua aturan yang bisa dipilih, yaitu aturan baku dan tidak
baku. Untuk aturan baku maka alamat website harus menggunakan http://google.com.
Sedangkan aturan tidak baku memperbolehkan penulisan dengan www, misal www.google.com.

Untuk proses validasi dengan aturan penulisan URL website baku kita bisa gunakan
fungsi filter_var dengan parameter FILTER_VALIDATE_URL. Jika menggunakan fungsi ini
maka pengguna harus benar-benar tepat dalam menulis alamat website sesuai aturan baku
penulisan URL.

Contoh validasi alamat URL dengan fungsi filter_var():


//mengambil data dari form
$website = test_input($_POST["website"]);
// cek format website yang dimasukkan
if (!filter_var($email, FILTER_VALIDATE_URL)) {
$websiteErr = "Format alamat Website tidak valid !"; //tampilkan pesan error website
$website=""; // kosongkan variabel $website
}
Untuk alternatif kita bisa membuat validasi alamat website sendiri dengan fungsi preg_match().
Disini kita memperbolehkan penulisan alamat website dengan www contoh: www.google.com.

Contoh validasi alamat URL dengan fungsi preg_match() :


//mengambil data dari form
$website = test_input($_POST["website"]);
// cek format website yang dimasukkan
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-
9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Format alamat Website tidak valid !"; //tampilkan pesan error website
$website=""; // kosongkan variabel $website
}
BAB 2.3
Validasi Input Numerik User
Validasi adalah sesuatu yang tidak bisa terpisahkan dalam proses penginputan data
karena validasi ini sangatlah penting untuk mem-filter inputan yang masuk sesuai dengan kriteria
yang kita inginkan dan kali ini akan saya bahas bagaimana agar user hanya bisa inputkan inputan
berupa angka saja dengan PHP .

Caranya cukup simple saja dan mari kita mulai . Pertama,kita harus buat form dalam bentuk
HTML terlebih dahulu seperti berikut
<form action="cek.php" method="post">

<input type="text" name="inputan"><input type="submit" name="submit" value="Submit">

</form>

Lalu kita buat pemroses form itu di file cek.php seperti berikut :
<?php

if(isset($_POST[submit])){

//Deklarasi Atribut

$input=$_POST[inputan];

if(is_numeric($input))

echo $input.“ adalah Angka”;

}else{

echo $input.“Ini bukan angka”;

}
?>
Penjelasan :

if(isset($_POST[submit]))
Mengecek apakah variabel submit sudah dibuat ataukah belum

if(is_numeric($input))

Mengecek inputan berupa angka ataukah bukan

Nama Kelompok :
BAB 2.1 =
1. Faisal Hidayatullah
2. Faishal Hilmy Fadhilah
BAB 2.2 =
1. Ferdi Wicaksono
2. Fingky Yuli .S
3. Helmy Ustadi
BAB 2.3 =
1. Mahardika Ari .P
2. Miskum
3. M.Makmur .S

Anda mungkin juga menyukai