Serial Apache II
=================================================
WEB INTERAKTIF DENGAN MODUL PERL
=================================================
Budi Santosa
[EMAIL PROTECTED]
1. Modul PERL.
Modul Perl merupakan shared library yang digunakan Apache untuk menjalankan
aplikasi yang dibuat oleh menggunakan bahasa PERL. Modul PERL tersedia diberbagai
distro Linux, misal; Red Hat dan Mandrake. Kelebihan modul ini dapat meng-emulasikan
CGI (COMMON GATEWAY INTERFACE), agar WEB lebih interaktif terhadap pemakai /user serta
bisa dijadikan integrasi berbagai sistem (misal ; web dengan database PostgreSQL dan
Web dengan POP3). Desainer web dapat membuat modul sendiri melalui bahas perl untuk
mengembangkan aplikasi e-commerce yang fleksibel, efisien dan ekonomis. Hanya saja
untuk menggunakan modul ini, user harus mengkonfigurasi terlebih dahulu di file
"/etc/httpd/conf/httpd.conf". Di tutorial ini hanya membahas mekanisme konfigurasi
mod_perl, emulasi CGI dan integrasi antar sistem. PERINGATAN: APLIKASI PERL DAPAT
MENIMBULKAN BUG / LUBANG PADA SISTEM KEAMANAN KARENA BERUPA SCRIPT. UNTUK MENGHINDARI
HACKER MENG-EXPLOIT APLIKASI, GUNAKAN PROXY SEBAGAI WEB AKSELERATOR ATAU WEB DIBUAT
TERPISAH DENGAN DATABASE. JADI TIDAK ADA AKSES LANGSUNG TERHADAP SCRIPT MAUPUN SISTEM
DATABASE.
2. Instalasi dan konfigurasi
2.1. mod perl
Paket ini harus diinstall terlebih dahulu agar Apache dapat
mengemulasikan CGI
# rpm -ivh mod_perl.xx.xx.rpm
2.2. Driver database.
Driver ini diperlukan jika perl ingin dihubungkan ke sistem RDBMS
PostgreSQL.
# rpm -ivh perl-DBI-xx.xx.rpm
# rpm -ivh perl-DBD-Pg-xx.xx.rpm
# rpm -ivh perl-CGI-xx-xx.rpm ;; modul CGI perl
3. Konfigurasi httpd.conf
1. cari konfigurasi di httpd.conf, jika tidak ada tambahkan.
<IfModule mod_perl.c>
Alias /perl/ /var/www/perl/
<Location /perl>
SetHandler perl-script
##PerlModule Apache::DBI ;; sistem database
PerlHandler Apache::Registry
PerlSendHeader on
Options +ExecCGI
</Location>
</IfModule>
2. Keterangan.
Konfigurasi diatas menjelaskan, direktif "Alias" digunakan untuk membuat alias
direktori "/var/www/perl/" jika saat "/perl/" dipanggil, atau bisa
http://localhost/perl/aplikasi.pl. module Apache::Registry meng-kompile dan
meng-eksekusi aplikasi PERL, sedangkan "PerlSendHeader On" akan mengaktifkan non-parse
header(NPH). NPH merupakan header dari server yang akan disampaikan ke browser klien (
Intet Explorer, Netscape dan Mozzilla dll) untuk diproses.
4. Test konfigurasi.
1. login sebagai super user buat direktori perl di /var/www.
# cd /var/www
# mkdir perl
# chown apache.apache perl
# chmod u+rwx perl
# /etc/rc.d/init.d/httpd restart
2. buat file test.pl
#!/usr/bin/perl
## tampilan "Content-type" harus tidak ada di web browser
print "Content-type: text/plain \n\n";
print "Send header oke ........... apik \n\n";
print "Ini test Non-parse header \n\n";
3. test konfigurasi
# chown apache.apache test.pl ;; 1
# chmod u+rwx test.pl ;; 2
# lynx 127.0.0.1/perl/test.pl
PERINGATAN: pada no 1 chown untuk menggantikan kepemilikan file dari root ke
user apache, agar bisa di-eksekusi oleh user apache (User Web server apache).
Kesalahan yang ditampilkan jika lupa merubah ke user apache yaitu; Internal Server
Error atau Forbiden access.
5. Tampilan Web.
Contoh dibawah ini, merupakan tampilan HTML yang dijadikan masukan oleh user
dari "INPUT TYPE". User memasukkan Nama, No Pokok dan Password yang kemudian diproses
oleh script "user.pl" melalui "FORM ACTION".
-------------------------------------------------------------
-------------------------------------------------------------
## file /var/www/html/user.html
<HTML>
<HEAD><TITLE>Form sederhana</TITLE></HEAD>
<BODY>
<FORM ACTION="/perl/user.pl" METHOD="GET">
Nama : <INPUT TYPE="text" NAME="nama" SIZE=40><BR>
No Pokok : <INPUT TYPE="text" NAME="no_pokok" SIZE=10><BR>
Password : <INPUT TYPE="password" NAME="pass" SIZE=10><BR>
<INPUT TYPE="submit" VALUE="submit form">
<INPUT TYPE="reset" VALUE="reset form">
</FORM>
</BODY>
</HTML>
-------------------------------------------------------------
-------------------------------------------------------------
## file /var/www/perl/user.pl
#!/usr/bin/perl
print "$ENV{'QUERY_STRING'} <BR>\n";
$masukan = $ENV{'QUERY_STRING'};
($user,$no_pokok,$password) = split(/&/, $masukan);
$user =~ s/nama=//g;
$user =~ s/\b\+|\t\b/ /g;
$password =~ s/pass=//g;
$no_pokok =~ s/no_pokok=//g;
$encrypt = crypt($password, substr($password,0,2));
print "Nama user : $user \n";
print "Password : $password \n";
print "No Pokok : $no_pokok \n";
print "Password encrypt : $encrypt \n";
Tampilannya menjadi:
Nama : budi santosa
Password : santosa
No Pokok : 97220037
Password encrypt : saBGrZphkCo5k ## ini encrypt standar.. tidak aman
6. Koneksi Database PostgreSQL.
Untuk koneksi ke Database PERL harus diinstall terlebih dahulu modul
perl-DBI-xx-xx.rpm dan perl-DBD-Pg-xx.rpm. Modul ini merupakan shared library yang
menghubungkan aplikasi / script PERL dengan database. Dengan adanya modul ini kita
dapat memanipulasi RDBMS (SELECT, INSERT, UPDATE dan DELETE) melalui WEB BROWSER klien
atau Internet. Dengan syarat membikin dulu database "test" dan tabel "auth". contoh
dibawah ini memasukkan no pokok, nama dan password encrypt MD5 UNIX ke dalam tabel
database postgreSQL.
+--------------+ +-------------+ +------------+
| Apache |------->| mod_perl |-------->| PostgreSQL |
| |<-------| perl-DBI |<--------| |
+--------------+ | perl-crypt | +------------+
+-------------+
Sebelum membuat koneksi ke PostgreSQL, database test dengan tabel auth harus dibuat,
untuk menyimpan informasi "no pokok", "nama" dan "password".
============================================
$ createdb test
$ psql test
test => CREATE TABLE auth (
test -> no_pokok int,
test -> nama varchar(30),
test -> password varchar(40)
test -> );
CREATE
test => \q
============================================
##file crypt_insert.pl di direktori /var/www/perl
use Crypt::PasswdMD5; ## module ini harus di install
use DBI;
#####################
# koneksi ke database #
#####################
$dbh = DBI->connect("dbi:Pg:dbname=test;host=localhost;port=5432", "budi", "santosa");
die "gagal konek ke database\n" unless($dbh);
$masukan = $ENV{'QUERY_STRING'};
($user,$no_pokok,$password) = split(/&/, $masukan);
$user =~ s/nama=//g;
$user =~ s/\b\+|\t\b/ /g;
$password =~ s/pass=//g;
$no_pokok =~ s/no_pokok=//g;
#########################
# encrypt password #
#########################
$salt = substr($password, 0, 2);
$encrypt = unix_md5_crypt($password, $salt);
print "$encrypt\a\n";
#########################
# query database #
#########################
$prep = $dbh->prepare("INSERT INTO auth VALUES($no_pokok,'$user','$encrypt')");
die "tidak bisa prepare \a\n" unless($prep);
$prep->execute;
Data yang dimasukan ke PostgreSQL, berupa password encrypt:
$ psql test
test => SELECT * FROM auth;
no_pokok | nama | password
----------+----------------+------------------------------
97220037 | budi santosa | $1$sa$5SxFohiip1Mr.IzDHuq9w.
99220178 | harisa yumawan | $1$ha$R0tMGiC09a4NjEaYeJA9j1
98220012 | wibowo ageng | $1$wi$KjEcmUiC0.Rfe5.h7awC0.
1220034 | sinuwun sare | $1$si$uJ14/TCGVnkAEuZgUgqcD/
95220122 | heri wiyanto | $1$wi$jjNMwJAINTaDCcUhWw0g0/
(5 rows)
Execelent ..... You're real HACKER
7. Pelacakan kesalahan.
7.1. Konfigurasi httpd.conf
agar dapat melihat kesalahan pada saat apache meng-kompile program,
dilakukan dengan mengubah tingkat LogLevel menjadi Debug. Sedangkan
error nya dilihat difile /etc/httpd/log/error_log atau
/var/log/httpd/error_log.
LogLevel debug
7.2. Konfigurasi syslogd.conf
Konfigurasi ini digunakan untuk melihat kesalahan konfigurasi Direktif
pada Apache web server, yang berhubungan dengan aplikasi daemon.
pesan dari daemon di arahkan ke user root dan terminal 1 (/dev/tty1).
jarak harus menggunakan TAB tidak boleh SPACE BAR.
daemon.* root, admin
daemon.* /dev/tty1
# /etc/rc.d/init.d/syslog restart ;;restart syslogd
Pesan :
MAAF KALO TUTORIAl INI RUMIT,... KARENA INTEGRASI SISTEM WEB DENGAN DATABASE
MELIBATKAN KOMBINASI SERTA KONFIGURASI ANTAR SUB SISTEM (Web, PERL, Syslogd dan
PosgreSQL). PENULIS TIDAK BISA MEMBERIKAN PEMBAHASAN YANG LEBIH DETAIL KARENA
KETERBATASAN WAKTU, JIKA ADA TEMAN 2X YANG BERMINAT MELENGKAPI TUTORIAL INI DAPAT
MENGHUBUNGI SAYA DI [EMAIL PROTECTED] NANTI AKAN SAYA BERIKAN PETUNJUK TENTANG TATA
CARA DESAIN INTEGRASI SISTEM.
Tutorial Serial Apache III : Server Side Include
Wassalam Jakarta, 30 November 2002
Sabtu 16:00
Budi Santosa
--
_______________________________________________
Get your free email from http://www.graffiti.net
Powered by Outblaze
---------------------------------------------------------------------
Jumlah pelanggan (updated daily): 188
Untuk berhenti berlangganan, kirim email ke: [EMAIL PROTECTED]
Arsip milis, hyperlink: http://www.mail-archive.com/[email protected]/