SlideShare a Scribd company logo
1 of 7
Download to read offline
STANDAR PEMROGRAMAN
    DAN DATABASE
    Sisfo IM Telkom




STANDAR PEMBUATAN PROGRAM APLIKASI
            PHP dan MySQL
         DI SISFO IM TELKOM




--- sebagai acuan pembuatan program aplikasi ---




                Tanggal Revisi
               22 Agustus 2008



                     oleh
           Nyoman Bogi Aditya Karna




   UNIT SISTEM INFORMASI
INSTITUT MANAJEMEN TELKOM
          BANDUNG
             2008
Prakata
Buku ini ditujukan sebagai acuan untuk memudahkan programmer Team Sisfo
maupun programmer mitra dalam mengembangkan aplikasi berbasis PHP.
Diharapkan dengan adanya standar pembuatan aplikasi ini, semua program dapat
dimengerti dengan lebih mudah oleh database manager dan programmer lainnya,
baik programmer di database server level 1 maupun di level 2.

Aturan Dasar Aplikasi
Beberapa aturan dasar dalam pembuatan setiap aplikasi di database server level 1
dan level 2 :

1. Setiap aplikasi menggunakan CSS agar jenis font dan ukuran tidak dapat diubah
   di sisi client

   <style type="text/css">
   <!--
   .title {font-family: Tahoma, Verdana; font-size: 16px;}
   .p1    {font-family: Tahoma, Verdana; font-size: 12px;}
   .p2    {font-family: Tahoma, Verdana; font-size: 12px;color: #FF0000;}
   -->
   </style>


   Cara menggunakannya :
   <p class=title>Judul Aplikasi</p><br>
   <p class=p1>menu1 | menu2</p>


   Catatan : CSS harus dideklarasikan ditiap kolom tabel
   <table><tr>
     <td><p class=p1> menu1 </p></td>
     <td><p class=p1> menu2 </p></td>
     <td><p class=p1> menu3 </p></td>
   </tr></table>


2. Tampilan aplikasi mencakup header dan footer yang tidak berubah untuk semua
   halaman (page). Ini berarti header dan footer merupakan file PHP terpisah
   ("header.php" dan "footer.php") yg di-include di setiap content aplikasi. Desain
   tampilan diserahkan sepenuhnya pada programmer dengan catatan bahwa
   warna tampilan bernuansa biru-putih

                       Judul Aplikasi                          bagian header
                    menu1 | menu2 | menu3

                         content aplikasi

             feedback (mailto:sisfo@imtelkom.ac.id)
                                                                bagian footer
                         © 2008 Sisfo



                          © Institut Manajemen Telkom
                           http://www.imtelkom.ac.id
3. Tidak ada hyperlink ke SIM lainnya untuk memudahkan updating (jika suatu SIM
   yg lain akan dipindahkan atau dihapus), karena telah dikembangkan sistem
   informasi 1-account.

4. Hyperlink ke suatu script (dalam aplikasi yg sama) menggunakan alamat relative
   untuk memudahkan updating (jika SIM akan pindah URL), contoh :
   (misal suatu SIM ada di URL http://host/sim)
   <a href=http://host/sim/1.php>  diganti <a href=1.php>
   <a href=http://host/sim/app/1.php>  diganti <a href=app/script1.php>
   <a href=http://host/1.php>  diganti <a href=../script1.php>


5. Setiap halaman pertama (login dan password) harus selalu menggunakan SSL
   (HTTPS), jika user tidak menggunakan SSL lakukan redirection ke HTTPS dengan
   menggunakan script PHP berikut di awal halaman pertama

   if ($_SERVER['SERVER_PORT'] == '80') {
       $host = $_SERVER['HTTP_HOST'];
       $uri   = $_SERVER['PHP_SELF'];
       header("Location: https://$host$uri");
   }


   Dan halaman login harus selalu mengunakan 3 masukan dari user, yaitu :
   1. username
   2. password
   3. tulisan dalam image (captcha)

6. Daftar koneksi MySQL yg digunakan (nama server, nama database, nama user,
   password) disimpan dalam 1 file "koneksi.php" untuk memudahkan maintenance
   dan updating (membuat account ketika MySQL diinstalasi ulang)

   $conn_selectonly = array (
   "server"          => "nama_server_yg_melakukan_query",
   "db"              => "nama_database",
   "user_selectonly => "user_dgn_privilege_select_only",
   "pass_selectonly => "pass_dgn_privilege_select_only",
   "user_all         => "user_dgn_all_privilege",
   "pass_all         => "pass_dgn_all_privilege");


7. Query ke suatu tabel di MySQL menyertakan nama database-nya, contoh :

   $result=mysql_query("select * from $conn_selectonly[db].nama_table");


8. Query yang menghasilkan result lebih dari 20 row dipecah menjadi banyak
   halaman dengan menggunakan fasilitas LIMIT, contoh :

   $result=mysql_query("select * from $conn_selectonly[db].nama_table limit
   $page,20");




                         © Institut Manajemen Telkom
                          http://www.imtelkom.ac.id
Aturan Untuk Security
Beberapa aturan tambahan dalam pembuatan aplikasi di database server level 2
perlu dibuat untuk meningkatkan security, mengingat aplikasi di database server
level 2 dapat diakses oleh publik :

9. Setiap parameter yang masuk ke halaman pertama (login dan password) harus
   selalu di-check dengan fungsi "anti_sql_injection.php" :

   function check_input($str) {
      $ch1=strpos($str,',');$ch2=strpos($str,"'");$ch3=strpos($str,'"');
      $ch4=strpos($str,';');$ch5=strpos($str,'=');$ch6=strpos($str,'-');
      $ch7=strpos($str,'%');$ch8=strpos($str,'$');$ch9=strpos($str,'<');
      $ch10=strpos($str,'>');
      if (($ch1===false) && ($ch2===false) && ($ch3===false) &&
          ($ch4===false) && ($ch5===false) && ($ch6===false) &&
          ($ch7===false) && ($ch8===false) && ($ch9===false) &&
          ($ch10===false)) {return true;} else {return false;}
   }


10. Jika jumlah account (login+password) untuk mengakses aplikasi hanya sedikit
    (kurang dari 5), maka daftar account tersebut disimpan dalam bentuk file
    ("user.php"), untuk menghindari exhaustive-query yang menyebabkan koneksi ke
    MySQL habis.

   $account = array (
   "user" => "user1",
   "pass" => "pass1");

   if (($login==$account[user]) && ($pass==$account[pass])) {

       <aplikasi>

   }


   Catatan 1 : jika login gagal (login/pass tidak sesuai dengan daftar account),
   jangan berikan keterangan apapun untuk mengurangi kemungkinan serangan
   Brute Force Attack yg mencoba semua kombinasi login+password dan akan
   berhenti jika keterangan "login gagal" tidak didapatkan lagi.
   Catatan 2 : file "koneksi.php" di no 6 tidak boleh digabungkan dengan file
   "user.php" karena account (login+password) untuk mengakses aplikasi harus
   dibedakan dengan account untuk mengakses MySQL

11. Selalu menggunakan session dalam database setelah login berhasil dengan
    kemampuan untuk mengeset lifetime dari session

12. Pengecekan alamat IP dari client dilakukan untuk membatasi akses dan
    mengurangi kemungkinan serangan

   if (substr($_SERVER['REMOTE_ADDR'],0,6)=='10.14.') {
      <application>
   } else {print "Sorry, this feature is available only from intranet";}


                         © Institut Manajemen Telkom
                          http://www.imtelkom.ac.id
Catatan : untuk mengurangi serangan Brute Force Attack, alamat IP dari client yg
terakhir mengakses dapat disimpan di suatu file beserta kapan waktu
mengaksesnya (jam:menit:detik). Jika yg mengakses saat ini memiliki alamat IP
yg sama dan selisih waktunya kurang dari 1 detik, maka akses akan ditolak dan
alamat IP tsb dilaporkan ke SuperUser untuk di-block menggunakan firewall
seperti script di bawah ini :

<?php
$ip=$_SERVER['REMOTE_ADDR'];
$now=time();
settype($now,"integer");
$file = "./last_ip.txt";

$fp = fopen($file,"r");
$row = fgetcsv($fp,100," ");
settype($row[1],"integer");
fclose($fp);

if (($row[0]==$ip) && (($now-$row[1])<3)) {
   $fp = fopen($file,"w");
   fputs($fp,"$ip $now");
   fclose($fp);
   $fp = fopen("./block.sh","a+");
   fputs($fp,"/sbin/ipfw add 100 deny ip from $ip to anyn");
   fclose($fp);
} else {
   $fp = fopen($file,"w");
   fputs($fp,"$ip $now");
   fclose($fp);
}
?>


Script di atas akan membuat file "block.sh" (di folder yg sama dengan aplikasi)
yg berisi command line firewall yg nantinya akan dieksekusi dan dihapus oleh
cron :
# cat /root/block_BFA.sh
/bin/chmod 700 /data/web/block.sh
/data/web/block.sh
/bin/rm /data/web/block.sh
# crontab –l | grep block_BFA.sh
*/1 * * * * /root/block_BFA.sh




                      © Institut Manajemen Telkom
                       http://www.imtelkom.ac.id
Aturan Database
Beberapa aturan perlu ditambahkan untuk menjaga struktur database dan tabel
yang lebih efisien dan sekaligus menjamin keamanan datanya :

1. Database Manager membuat database dan menyediakan 2 buah account untuk
   mengakses database tersebut :
   1 account dengan hanya privilege "select"
   1 account dengan privilege "select, insert, update, delete"

2. Pembuatan dan pengubahan struktur tabel harus seijin Database Manager, untuk
   mempertahankan kestabilan sistem, efisiensi ruang hard disk, kecepatan
   pengaksesan data, dan mempermudah penggunaan tabel oleh programmer lain

3. Setiap penamaan program, database, tabel, dan account harus sesuai dengan
   peruntukannya, agar mudah mengidentifikasi fungsinya jika dibaca oleh user,
   database manager, maupun programmer lain

4. Type column diusahakan agar NOT NULL untuk mempercepat akses, karena jika
   ada column yg boleh NULL maka column tsb bisa tidak ada alokasi spasi jika
   kosong (tidak ada data)

5. Menghindari penggunaan type column variable spt "varchar" untuk mempercepat
   akses ke suatu record (row) karena "varchar" akan membuat panjang setiap row
   (record) menjadi tidak sama, sehingga untuk mencari suatu data akan menjadi
   lebih lama (jika mekanisme akses-nya sekuensial)

6. Selalu membuat index pada primary key untuk mempercepat akses, karena
   dengan index (versi tabel yg tersorting) mekanisme pencarian tidak lagi
   sekuensial (berurutan satu demi satu)

7. Membuat tabel sekecil mungkin (dari sisi jumlah field/column dan jumlah
   record/row) untuk mempercepat akses, karena tabel yg berukuran kecil akan
   dapat di-load seluruhnya ke memory

8. Selalu menjaga agar tabel selalu tersorting berdasarkan primary key untuk
   mempercepat akses ke suatu record (row), karena jika record di suatu tabel tidak
   berurutan maka pencarian akan sekuensial

Catatan: rule nomor 16 s.d. 20 mengacu pada manual MySQL, bukan berdasarkan
pengalaman maupun eksperimen




                          © Institut Manajemen Telkom
                           http://www.imtelkom.ac.id
Contoh Format Dasar
<html>
<head><title>Judul Aplikasi</title></head>
<style>
</style>
<body>
<p class=p1>
<?php
include("anti_sql_injection.php");
include("user.php");
include("koneksi.php");

if (substr($_SERVER['REMOTE_ADDR'],9) == '10.14.203') {
  if (check_input($login) && check_input($pass)) {
    if ($link=mysql_connect("localhost","$user","$password") {

      $result=mysql_query("select ip from $db.nilai where nim='$login'");
      $data=mysql_fetch_array($result,BOTH);
      print "$data[0]";

     } else {print "can not connect to database, please try again later";}
   } else {print "illegal character found";}
} else { print "sorry, you’re not allowed to access this application";}
?>
</body>
</html>




                        © Institut Manajemen Telkom
                         http://www.imtelkom.ac.id

More Related Content

What's hot

Podman - The Next Generation of Linux Container Tools
Podman - The Next Generation of Linux Container ToolsPodman - The Next Generation of Linux Container Tools
Podman - The Next Generation of Linux Container ToolsI Putu Hariyadi
 
Memblokir situs dengan squid proxy di linux debian server By: Fakhri akbar CC5
Memblokir situs dengan squid proxy di linux debian server By: Fakhri akbar CC5Memblokir situs dengan squid proxy di linux debian server By: Fakhri akbar CC5
Memblokir situs dengan squid proxy di linux debian server By: Fakhri akbar CC5akbarfak
 
Modul Solusi UN SMK TKJ Paket 1 - Membangun PC Router & Proxy Server
Modul Solusi UN SMK TKJ Paket 1 - Membangun PC Router & Proxy ServerModul Solusi UN SMK TKJ Paket 1 - Membangun PC Router & Proxy Server
Modul Solusi UN SMK TKJ Paket 1 - Membangun PC Router & Proxy ServerI Putu Hariyadi
 
Network Automation with Ansible
Network Automation with AnsibleNetwork Automation with Ansible
Network Automation with AnsibleI Putu Hariyadi
 
cara install nginx dengan php5 dan dukungan Mysql Di CentOS 6.5
cara install nginx dengan php5 dan dukungan Mysql Di CentOS 6.5cara install nginx dengan php5 dan dukungan Mysql Di CentOS 6.5
cara install nginx dengan php5 dan dukungan Mysql Di CentOS 6.5stephan EL'wiin Shaarawy
 
Konfigurasi Site-to-Site IPSec VPN Tunnel di Mikrotik menggunakan GNS3
Konfigurasi Site-to-Site IPSec VPN Tunnel di Mikrotik menggunakan GNS3Konfigurasi Site-to-Site IPSec VPN Tunnel di Mikrotik menggunakan GNS3
Konfigurasi Site-to-Site IPSec VPN Tunnel di Mikrotik menggunakan GNS3I Putu Hariyadi
 
Import DEVNET Associate OVA sebagai VM pada Proxmox VE 6.3
Import DEVNET Associate OVA sebagai VM pada Proxmox VE 6.3Import DEVNET Associate OVA sebagai VM pada Proxmox VE 6.3
Import DEVNET Associate OVA sebagai VM pada Proxmox VE 6.3I Putu Hariyadi
 
Dokumentasi Pembangun Server Cloud di Domain TKJ SMKN 1 Cimahi
Dokumentasi Pembangun Server Cloud di Domain TKJ SMKN 1 CimahiDokumentasi Pembangun Server Cloud di Domain TKJ SMKN 1 Cimahi
Dokumentasi Pembangun Server Cloud di Domain TKJ SMKN 1 CimahiFebi Gelar Ramadhan
 
Pembahasansoallks2013
Pembahasansoallks2013Pembahasansoallks2013
Pembahasansoallks2013dedd_simbolon
 
Tutorial Debian Bab 14 sekuriti dasar debian gnu linux
Tutorial Debian Bab 14 sekuriti dasar debian gnu linuxTutorial Debian Bab 14 sekuriti dasar debian gnu linux
Tutorial Debian Bab 14 sekuriti dasar debian gnu linuxDidit Septiawan
 
Pembahasan UKK TKJ Paket 1
Pembahasan UKK TKJ Paket 1Pembahasan UKK TKJ Paket 1
Pembahasan UKK TKJ Paket 1Dt Yunizaldi
 
Modul konfigurasi debian 7.5.0 i386
Modul konfigurasi debian 7.5.0 i386 Modul konfigurasi debian 7.5.0 i386
Modul konfigurasi debian 7.5.0 i386 Rio Coit's
 
Soal Modul A Linux Environment LKS SMK NTB 2018
Soal Modul A Linux Environment LKS SMK NTB 2018Soal Modul A Linux Environment LKS SMK NTB 2018
Soal Modul A Linux Environment LKS SMK NTB 2018I Putu Hariyadi
 
Supriyanto squidproxyserver
Supriyanto squidproxyserverSupriyanto squidproxyserver
Supriyanto squidproxyserverHARRY CHAN PUTRA
 
Configuring NAT & DHCP Service Using Cisco Router
Configuring NAT & DHCP Service Using Cisco RouterConfiguring NAT & DHCP Service Using Cisco Router
Configuring NAT & DHCP Service Using Cisco RouterI Putu Hariyadi
 
Tugas akhir automation ansible final
Tugas akhir automation ansible finalTugas akhir automation ansible final
Tugas akhir automation ansible finalRakha Fauzi
 

What's hot (20)

Podman - The Next Generation of Linux Container Tools
Podman - The Next Generation of Linux Container ToolsPodman - The Next Generation of Linux Container Tools
Podman - The Next Generation of Linux Container Tools
 
Memblokir situs dengan squid proxy di linux debian server By: Fakhri akbar CC5
Memblokir situs dengan squid proxy di linux debian server By: Fakhri akbar CC5Memblokir situs dengan squid proxy di linux debian server By: Fakhri akbar CC5
Memblokir situs dengan squid proxy di linux debian server By: Fakhri akbar CC5
 
Qmail P to V Migration
Qmail P to V MigrationQmail P to V Migration
Qmail P to V Migration
 
Modul Solusi UN SMK TKJ Paket 1 - Membangun PC Router & Proxy Server
Modul Solusi UN SMK TKJ Paket 1 - Membangun PC Router & Proxy ServerModul Solusi UN SMK TKJ Paket 1 - Membangun PC Router & Proxy Server
Modul Solusi UN SMK TKJ Paket 1 - Membangun PC Router & Proxy Server
 
Network Automation with Ansible
Network Automation with AnsibleNetwork Automation with Ansible
Network Automation with Ansible
 
cara install nginx dengan php5 dan dukungan Mysql Di CentOS 6.5
cara install nginx dengan php5 dan dukungan Mysql Di CentOS 6.5cara install nginx dengan php5 dan dukungan Mysql Di CentOS 6.5
cara install nginx dengan php5 dan dukungan Mysql Di CentOS 6.5
 
Konfigurasi Site-to-Site IPSec VPN Tunnel di Mikrotik menggunakan GNS3
Konfigurasi Site-to-Site IPSec VPN Tunnel di Mikrotik menggunakan GNS3Konfigurasi Site-to-Site IPSec VPN Tunnel di Mikrotik menggunakan GNS3
Konfigurasi Site-to-Site IPSec VPN Tunnel di Mikrotik menggunakan GNS3
 
Squid indonesia
Squid indonesiaSquid indonesia
Squid indonesia
 
Import DEVNET Associate OVA sebagai VM pada Proxmox VE 6.3
Import DEVNET Associate OVA sebagai VM pada Proxmox VE 6.3Import DEVNET Associate OVA sebagai VM pada Proxmox VE 6.3
Import DEVNET Associate OVA sebagai VM pada Proxmox VE 6.3
 
Dokumentasi Pembangun Server Cloud di Domain TKJ SMKN 1 Cimahi
Dokumentasi Pembangun Server Cloud di Domain TKJ SMKN 1 CimahiDokumentasi Pembangun Server Cloud di Domain TKJ SMKN 1 Cimahi
Dokumentasi Pembangun Server Cloud di Domain TKJ SMKN 1 Cimahi
 
Pembahasansoallks2013
Pembahasansoallks2013Pembahasansoallks2013
Pembahasansoallks2013
 
Tutorial Debian Bab 14 sekuriti dasar debian gnu linux
Tutorial Debian Bab 14 sekuriti dasar debian gnu linuxTutorial Debian Bab 14 sekuriti dasar debian gnu linux
Tutorial Debian Bab 14 sekuriti dasar debian gnu linux
 
Pembahasan UKK TKJ Paket 1
Pembahasan UKK TKJ Paket 1Pembahasan UKK TKJ Paket 1
Pembahasan UKK TKJ Paket 1
 
websecure.ppt
websecure.pptwebsecure.ppt
websecure.ppt
 
Modul konfigurasi debian 7.5.0 i386
Modul konfigurasi debian 7.5.0 i386 Modul konfigurasi debian 7.5.0 i386
Modul konfigurasi debian 7.5.0 i386
 
Soal Modul A Linux Environment LKS SMK NTB 2018
Soal Modul A Linux Environment LKS SMK NTB 2018Soal Modul A Linux Environment LKS SMK NTB 2018
Soal Modul A Linux Environment LKS SMK NTB 2018
 
Supriyanto squidproxyserver
Supriyanto squidproxyserverSupriyanto squidproxyserver
Supriyanto squidproxyserver
 
Configuring NAT & DHCP Service Using Cisco Router
Configuring NAT & DHCP Service Using Cisco RouterConfiguring NAT & DHCP Service Using Cisco Router
Configuring NAT & DHCP Service Using Cisco Router
 
Setting PROXY Ubuntu Server
Setting PROXY Ubuntu ServerSetting PROXY Ubuntu Server
Setting PROXY Ubuntu Server
 
Tugas akhir automation ansible final
Tugas akhir automation ansible finalTugas akhir automation ansible final
Tugas akhir automation ansible final
 

Similar to STANDAR PHP DAN MYSQL

11 aplikasi teknologi online - session dan aplikasinya
11   aplikasi teknologi online - session dan aplikasinya11   aplikasi teknologi online - session dan aplikasinya
11 aplikasi teknologi online - session dan aplikasinyaMateri Kuliah Online
 
Modul praktikum Pemrograman web Backend dengan Codeigniter dan LTE
Modul praktikum Pemrograman web Backend dengan Codeigniter dan LTEModul praktikum Pemrograman web Backend dengan Codeigniter dan LTE
Modul praktikum Pemrograman web Backend dengan Codeigniter dan LTEIgun
 
test saja kok
test saja koktest saja kok
test saja koknehakhus
 
Berkenalan dengan bahasa php pemrograman web
Berkenalan dengan bahasa php   pemrograman webBerkenalan dengan bahasa php   pemrograman web
Berkenalan dengan bahasa php pemrograman webVicky Nitinegoro
 
Tips Keamanan Software OJS : Panduan Untuk Pemula
Tips Keamanan Software OJS : Panduan Untuk PemulaTips Keamanan Software OJS : Panduan Untuk Pemula
Tips Keamanan Software OJS : Panduan Untuk PemulaDwi Fajar Saputra
 
Program database sederhana di android
Program database sederhana di androidProgram database sederhana di android
Program database sederhana di androidInto Setiawan
 
Implementasi otentikasi pada squid dalam mode transparent proxy
Implementasi otentikasi pada squid dalam mode transparent proxyImplementasi otentikasi pada squid dalam mode transparent proxy
Implementasi otentikasi pada squid dalam mode transparent proxyPanggih Supraja
 
Proyek+membangun+cms+tanpa+oop
Proyek+membangun+cms+tanpa+oopProyek+membangun+cms+tanpa+oop
Proyek+membangun+cms+tanpa+oopTelkomsat
 
Langkah codeigniter multisite
Langkah codeigniter multisiteLangkah codeigniter multisite
Langkah codeigniter multisitekerang_hotmail
 
Sim, 5, andika fajar, hapzi ali, sistem manajemen database, universitas mercu...
Sim, 5, andika fajar, hapzi ali, sistem manajemen database, universitas mercu...Sim, 5, andika fajar, hapzi ali, sistem manajemen database, universitas mercu...
Sim, 5, andika fajar, hapzi ali, sistem manajemen database, universitas mercu...Andika Fajar
 
laporan praktikum rekayasa software php dan mysql
laporan praktikum rekayasa software php dan mysqllaporan praktikum rekayasa software php dan mysql
laporan praktikum rekayasa software php dan mysqlHibaten Wafiroh
 
Script login form php
Script login form phpScript login form php
Script login form phpHanief Rpl
 

Similar to STANDAR PHP DAN MYSQL (20)

Php tutorial-17
Php tutorial-17Php tutorial-17
Php tutorial-17
 
Php CMS tutorial
Php CMS tutorialPhp CMS tutorial
Php CMS tutorial
 
11 aplikasi teknologi online - session dan aplikasinya
11   aplikasi teknologi online - session dan aplikasinya11   aplikasi teknologi online - session dan aplikasinya
11 aplikasi teknologi online - session dan aplikasinya
 
Laporan_PHP-MySQL
Laporan_PHP-MySQLLaporan_PHP-MySQL
Laporan_PHP-MySQL
 
Cara Mengamankan Server OJS
Cara Mengamankan Server OJSCara Mengamankan Server OJS
Cara Mengamankan Server OJS
 
Bab ii
Bab iiBab ii
Bab ii
 
Modul praktikum Pemrograman web Backend dengan Codeigniter dan LTE
Modul praktikum Pemrograman web Backend dengan Codeigniter dan LTEModul praktikum Pemrograman web Backend dengan Codeigniter dan LTE
Modul praktikum Pemrograman web Backend dengan Codeigniter dan LTE
 
test saja kok
test saja koktest saja kok
test saja kok
 
Berkenalan dengan bahasa php pemrograman web
Berkenalan dengan bahasa php   pemrograman webBerkenalan dengan bahasa php   pemrograman web
Berkenalan dengan bahasa php pemrograman web
 
Modul php 4
Modul php 4Modul php 4
Modul php 4
 
Modul php 4
Modul php 4Modul php 4
Modul php 4
 
Tips Keamanan Software OJS : Panduan Untuk Pemula
Tips Keamanan Software OJS : Panduan Untuk PemulaTips Keamanan Software OJS : Panduan Untuk Pemula
Tips Keamanan Software OJS : Panduan Untuk Pemula
 
Program database sederhana di android
Program database sederhana di androidProgram database sederhana di android
Program database sederhana di android
 
Implementasi otentikasi pada squid dalam mode transparent proxy
Implementasi otentikasi pada squid dalam mode transparent proxyImplementasi otentikasi pada squid dalam mode transparent proxy
Implementasi otentikasi pada squid dalam mode transparent proxy
 
Proyek+membangun+cms+tanpa+oop
Proyek+membangun+cms+tanpa+oopProyek+membangun+cms+tanpa+oop
Proyek+membangun+cms+tanpa+oop
 
Langkah codeigniter multisite
Langkah codeigniter multisiteLangkah codeigniter multisite
Langkah codeigniter multisite
 
Sim, 5, andika fajar, hapzi ali, sistem manajemen database, universitas mercu...
Sim, 5, andika fajar, hapzi ali, sistem manajemen database, universitas mercu...Sim, 5, andika fajar, hapzi ali, sistem manajemen database, universitas mercu...
Sim, 5, andika fajar, hapzi ali, sistem manajemen database, universitas mercu...
 
FreeBSD Database Server
FreeBSD Database ServerFreeBSD Database Server
FreeBSD Database Server
 
laporan praktikum rekayasa software php dan mysql
laporan praktikum rekayasa software php dan mysqllaporan praktikum rekayasa software php dan mysql
laporan praktikum rekayasa software php dan mysql
 
Script login form php
Script login form phpScript login form php
Script login form php
 

More from Telkom Institute of Management (20)

Oracle VirtualBox
Oracle VirtualBoxOracle VirtualBox
Oracle VirtualBox
 
Oracle on Solaris
Oracle on SolarisOracle on Solaris
Oracle on Solaris
 
FreeBSD VPN Server
FreeBSD VPN ServerFreeBSD VPN Server
FreeBSD VPN Server
 
FreeBSD Traffic Monitoring
FreeBSD Traffic MonitoringFreeBSD Traffic Monitoring
FreeBSD Traffic Monitoring
 
FreeBSD Proxy Server
FreeBSD Proxy ServerFreeBSD Proxy Server
FreeBSD Proxy Server
 
FreeBSD Name Server
FreeBSD Name ServerFreeBSD Name Server
FreeBSD Name Server
 
FreeBSD web-based MUA
FreeBSD web-based MUAFreeBSD web-based MUA
FreeBSD web-based MUA
 
FreeBSD POP3/IMAP Server
FreeBSD POP3/IMAP ServerFreeBSD POP3/IMAP Server
FreeBSD POP3/IMAP Server
 
FreeBSD Securing Mail Server
FreeBSD Securing Mail ServerFreeBSD Securing Mail Server
FreeBSD Securing Mail Server
 
FreeBSD Mailing List
FreeBSD Mailing ListFreeBSD Mailing List
FreeBSD Mailing List
 
FreeBSD Mail Server
FreeBSD Mail ServerFreeBSD Mail Server
FreeBSD Mail Server
 
FreeBSD Log Analyzer
FreeBSD Log AnalyzerFreeBSD Log Analyzer
FreeBSD Log Analyzer
 
FreeBSD PHP
FreeBSD PHPFreeBSD PHP
FreeBSD PHP
 
FreeBSD Web Server
FreeBSD Web ServerFreeBSD Web Server
FreeBSD Web Server
 
FreeBSD Installation
FreeBSD InstallationFreeBSD Installation
FreeBSD Installation
 
FreeBSD FTP Server
FreeBSD FTP ServerFreeBSD FTP Server
FreeBSD FTP Server
 
FreeBSD Bandwidth Management
FreeBSD Bandwidth ManagementFreeBSD Bandwidth Management
FreeBSD Bandwidth Management
 
FreeBSD Firewall
FreeBSD FirewallFreeBSD Firewall
FreeBSD Firewall
 
FreeBSD Basic Setting
FreeBSD Basic SettingFreeBSD Basic Setting
FreeBSD Basic Setting
 
FreeBSD Installation
FreeBSD InstallationFreeBSD Installation
FreeBSD Installation
 

Recently uploaded

Program Roots Indonesia/Aksi Nyata AAP.pdf
Program Roots Indonesia/Aksi Nyata AAP.pdfProgram Roots Indonesia/Aksi Nyata AAP.pdf
Program Roots Indonesia/Aksi Nyata AAP.pdfwaktinisayunw93
 
Teks ucapan Majlis Perpisahan Lambaian Kasih
Teks ucapan Majlis Perpisahan Lambaian KasihTeks ucapan Majlis Perpisahan Lambaian Kasih
Teks ucapan Majlis Perpisahan Lambaian Kasihssuserfcb9e3
 
PERTEMUAN 9 KESEIM 3 SEKTOR.............
PERTEMUAN 9 KESEIM 3 SEKTOR.............PERTEMUAN 9 KESEIM 3 SEKTOR.............
PERTEMUAN 9 KESEIM 3 SEKTOR.............SenLord
 
KISI-KISI Soal PAS Geografi Kelas XII.docx
KISI-KISI Soal PAS Geografi Kelas XII.docxKISI-KISI Soal PAS Geografi Kelas XII.docx
KISI-KISI Soal PAS Geografi Kelas XII.docxjohan effendi
 
Modul Ajar Informatika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Informatika Kelas 11 Fase F Kurikulum MerdekaModul Ajar Informatika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Informatika Kelas 11 Fase F Kurikulum MerdekaAbdiera
 
Estetika Humanisme Diskusi Video Sesi Ke-1.pdf
Estetika Humanisme Diskusi Video Sesi Ke-1.pdfEstetika Humanisme Diskusi Video Sesi Ke-1.pdf
Estetika Humanisme Diskusi Video Sesi Ke-1.pdfHendroGunawan8
 
Product Knowledge Rapor Pendidikan - Satuan Pendidikan Dasmen&Vokasi.pptx
Product Knowledge Rapor Pendidikan - Satuan Pendidikan Dasmen&Vokasi.pptxProduct Knowledge Rapor Pendidikan - Satuan Pendidikan Dasmen&Vokasi.pptx
Product Knowledge Rapor Pendidikan - Satuan Pendidikan Dasmen&Vokasi.pptxKaista Glow
 
UNSUR - UNSUR, LUAS, KELILING LINGKARAN.pptx
UNSUR - UNSUR, LUAS, KELILING LINGKARAN.pptxUNSUR - UNSUR, LUAS, KELILING LINGKARAN.pptx
UNSUR - UNSUR, LUAS, KELILING LINGKARAN.pptxFranxisca Kurniawati
 
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptxKeberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptxLeniMawarti1
 
Aksi Nyata PERENCANAAN BERBASIS DATA.pptx
Aksi Nyata PERENCANAAN BERBASIS DATA.pptxAksi Nyata PERENCANAAN BERBASIS DATA.pptx
Aksi Nyata PERENCANAAN BERBASIS DATA.pptxdonny761155
 
PPT PERLINDUNGAN KONSUMEN .Pengertian Transaksi Online
PPT PERLINDUNGAN KONSUMEN .Pengertian Transaksi OnlinePPT PERLINDUNGAN KONSUMEN .Pengertian Transaksi Online
PPT PERLINDUNGAN KONSUMEN .Pengertian Transaksi OnlineMMario4
 
Buku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfBuku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfWahyudinST
 
Elemen Jurnalistik Ilmu Komunikasii.pptx
Elemen Jurnalistik Ilmu Komunikasii.pptxElemen Jurnalistik Ilmu Komunikasii.pptx
Elemen Jurnalistik Ilmu Komunikasii.pptxGyaCahyaPratiwi
 
Gandum & Lalang (Matius......13_24-30).pptx
Gandum & Lalang (Matius......13_24-30).pptxGandum & Lalang (Matius......13_24-30).pptx
Gandum & Lalang (Matius......13_24-30).pptxHansTobing
 
Perbaikan ekonomi zaman Habibie (Offering A - 4-6) Pertemuan - 10.pdf
Perbaikan ekonomi zaman Habibie (Offering A - 4-6) Pertemuan - 10.pdfPerbaikan ekonomi zaman Habibie (Offering A - 4-6) Pertemuan - 10.pdf
Perbaikan ekonomi zaman Habibie (Offering A - 4-6) Pertemuan - 10.pdfAgungNugroho932694
 
Diagram Fryer Pembelajaran Berdifferensiasi
Diagram Fryer Pembelajaran BerdifferensiasiDiagram Fryer Pembelajaran Berdifferensiasi
Diagram Fryer Pembelajaran BerdifferensiasiOviLarassaty1
 
Sejarah Perkembangan Teori Manajemen.ppt
Sejarah Perkembangan Teori Manajemen.pptSejarah Perkembangan Teori Manajemen.ppt
Sejarah Perkembangan Teori Manajemen.pptssuser940815
 
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptx
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptxSKPM Kualiti @ Sekolah 23 Feb 22222023.pptx
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptxg66527130
 
Kualifikasi dan Kompetensi Guru Profesi Kependidikan .pptx
Kualifikasi dan Kompetensi Guru Profesi Kependidikan .pptxKualifikasi dan Kompetensi Guru Profesi Kependidikan .pptx
Kualifikasi dan Kompetensi Guru Profesi Kependidikan .pptxSelviPanggua1
 
Silabus Mata Pelajaran Biologi SMA Kelas X.doc
Silabus Mata Pelajaran Biologi SMA Kelas X.docSilabus Mata Pelajaran Biologi SMA Kelas X.doc
Silabus Mata Pelajaran Biologi SMA Kelas X.docNurulAiniFirdasari1
 

Recently uploaded (20)

Program Roots Indonesia/Aksi Nyata AAP.pdf
Program Roots Indonesia/Aksi Nyata AAP.pdfProgram Roots Indonesia/Aksi Nyata AAP.pdf
Program Roots Indonesia/Aksi Nyata AAP.pdf
 
Teks ucapan Majlis Perpisahan Lambaian Kasih
Teks ucapan Majlis Perpisahan Lambaian KasihTeks ucapan Majlis Perpisahan Lambaian Kasih
Teks ucapan Majlis Perpisahan Lambaian Kasih
 
PERTEMUAN 9 KESEIM 3 SEKTOR.............
PERTEMUAN 9 KESEIM 3 SEKTOR.............PERTEMUAN 9 KESEIM 3 SEKTOR.............
PERTEMUAN 9 KESEIM 3 SEKTOR.............
 
KISI-KISI Soal PAS Geografi Kelas XII.docx
KISI-KISI Soal PAS Geografi Kelas XII.docxKISI-KISI Soal PAS Geografi Kelas XII.docx
KISI-KISI Soal PAS Geografi Kelas XII.docx
 
Modul Ajar Informatika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Informatika Kelas 11 Fase F Kurikulum MerdekaModul Ajar Informatika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Informatika Kelas 11 Fase F Kurikulum Merdeka
 
Estetika Humanisme Diskusi Video Sesi Ke-1.pdf
Estetika Humanisme Diskusi Video Sesi Ke-1.pdfEstetika Humanisme Diskusi Video Sesi Ke-1.pdf
Estetika Humanisme Diskusi Video Sesi Ke-1.pdf
 
Product Knowledge Rapor Pendidikan - Satuan Pendidikan Dasmen&Vokasi.pptx
Product Knowledge Rapor Pendidikan - Satuan Pendidikan Dasmen&Vokasi.pptxProduct Knowledge Rapor Pendidikan - Satuan Pendidikan Dasmen&Vokasi.pptx
Product Knowledge Rapor Pendidikan - Satuan Pendidikan Dasmen&Vokasi.pptx
 
UNSUR - UNSUR, LUAS, KELILING LINGKARAN.pptx
UNSUR - UNSUR, LUAS, KELILING LINGKARAN.pptxUNSUR - UNSUR, LUAS, KELILING LINGKARAN.pptx
UNSUR - UNSUR, LUAS, KELILING LINGKARAN.pptx
 
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptxKeberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
 
Aksi Nyata PERENCANAAN BERBASIS DATA.pptx
Aksi Nyata PERENCANAAN BERBASIS DATA.pptxAksi Nyata PERENCANAAN BERBASIS DATA.pptx
Aksi Nyata PERENCANAAN BERBASIS DATA.pptx
 
PPT PERLINDUNGAN KONSUMEN .Pengertian Transaksi Online
PPT PERLINDUNGAN KONSUMEN .Pengertian Transaksi OnlinePPT PERLINDUNGAN KONSUMEN .Pengertian Transaksi Online
PPT PERLINDUNGAN KONSUMEN .Pengertian Transaksi Online
 
Buku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfBuku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdf
 
Elemen Jurnalistik Ilmu Komunikasii.pptx
Elemen Jurnalistik Ilmu Komunikasii.pptxElemen Jurnalistik Ilmu Komunikasii.pptx
Elemen Jurnalistik Ilmu Komunikasii.pptx
 
Gandum & Lalang (Matius......13_24-30).pptx
Gandum & Lalang (Matius......13_24-30).pptxGandum & Lalang (Matius......13_24-30).pptx
Gandum & Lalang (Matius......13_24-30).pptx
 
Perbaikan ekonomi zaman Habibie (Offering A - 4-6) Pertemuan - 10.pdf
Perbaikan ekonomi zaman Habibie (Offering A - 4-6) Pertemuan - 10.pdfPerbaikan ekonomi zaman Habibie (Offering A - 4-6) Pertemuan - 10.pdf
Perbaikan ekonomi zaman Habibie (Offering A - 4-6) Pertemuan - 10.pdf
 
Diagram Fryer Pembelajaran Berdifferensiasi
Diagram Fryer Pembelajaran BerdifferensiasiDiagram Fryer Pembelajaran Berdifferensiasi
Diagram Fryer Pembelajaran Berdifferensiasi
 
Sejarah Perkembangan Teori Manajemen.ppt
Sejarah Perkembangan Teori Manajemen.pptSejarah Perkembangan Teori Manajemen.ppt
Sejarah Perkembangan Teori Manajemen.ppt
 
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptx
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptxSKPM Kualiti @ Sekolah 23 Feb 22222023.pptx
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptx
 
Kualifikasi dan Kompetensi Guru Profesi Kependidikan .pptx
Kualifikasi dan Kompetensi Guru Profesi Kependidikan .pptxKualifikasi dan Kompetensi Guru Profesi Kependidikan .pptx
Kualifikasi dan Kompetensi Guru Profesi Kependidikan .pptx
 
Silabus Mata Pelajaran Biologi SMA Kelas X.doc
Silabus Mata Pelajaran Biologi SMA Kelas X.docSilabus Mata Pelajaran Biologi SMA Kelas X.doc
Silabus Mata Pelajaran Biologi SMA Kelas X.doc
 

STANDAR PHP DAN MYSQL

  • 1. STANDAR PEMROGRAMAN DAN DATABASE Sisfo IM Telkom STANDAR PEMBUATAN PROGRAM APLIKASI PHP dan MySQL DI SISFO IM TELKOM --- sebagai acuan pembuatan program aplikasi --- Tanggal Revisi 22 Agustus 2008 oleh Nyoman Bogi Aditya Karna UNIT SISTEM INFORMASI INSTITUT MANAJEMEN TELKOM BANDUNG 2008
  • 2. Prakata Buku ini ditujukan sebagai acuan untuk memudahkan programmer Team Sisfo maupun programmer mitra dalam mengembangkan aplikasi berbasis PHP. Diharapkan dengan adanya standar pembuatan aplikasi ini, semua program dapat dimengerti dengan lebih mudah oleh database manager dan programmer lainnya, baik programmer di database server level 1 maupun di level 2. Aturan Dasar Aplikasi Beberapa aturan dasar dalam pembuatan setiap aplikasi di database server level 1 dan level 2 : 1. Setiap aplikasi menggunakan CSS agar jenis font dan ukuran tidak dapat diubah di sisi client <style type="text/css"> <!-- .title {font-family: Tahoma, Verdana; font-size: 16px;} .p1 {font-family: Tahoma, Verdana; font-size: 12px;} .p2 {font-family: Tahoma, Verdana; font-size: 12px;color: #FF0000;} --> </style> Cara menggunakannya : <p class=title>Judul Aplikasi</p><br> <p class=p1>menu1 | menu2</p> Catatan : CSS harus dideklarasikan ditiap kolom tabel <table><tr> <td><p class=p1> menu1 </p></td> <td><p class=p1> menu2 </p></td> <td><p class=p1> menu3 </p></td> </tr></table> 2. Tampilan aplikasi mencakup header dan footer yang tidak berubah untuk semua halaman (page). Ini berarti header dan footer merupakan file PHP terpisah ("header.php" dan "footer.php") yg di-include di setiap content aplikasi. Desain tampilan diserahkan sepenuhnya pada programmer dengan catatan bahwa warna tampilan bernuansa biru-putih Judul Aplikasi  bagian header menu1 | menu2 | menu3 content aplikasi feedback (mailto:sisfo@imtelkom.ac.id)  bagian footer © 2008 Sisfo © Institut Manajemen Telkom http://www.imtelkom.ac.id
  • 3. 3. Tidak ada hyperlink ke SIM lainnya untuk memudahkan updating (jika suatu SIM yg lain akan dipindahkan atau dihapus), karena telah dikembangkan sistem informasi 1-account. 4. Hyperlink ke suatu script (dalam aplikasi yg sama) menggunakan alamat relative untuk memudahkan updating (jika SIM akan pindah URL), contoh : (misal suatu SIM ada di URL http://host/sim) <a href=http://host/sim/1.php>  diganti <a href=1.php> <a href=http://host/sim/app/1.php>  diganti <a href=app/script1.php> <a href=http://host/1.php>  diganti <a href=../script1.php> 5. Setiap halaman pertama (login dan password) harus selalu menggunakan SSL (HTTPS), jika user tidak menggunakan SSL lakukan redirection ke HTTPS dengan menggunakan script PHP berikut di awal halaman pertama if ($_SERVER['SERVER_PORT'] == '80') { $host = $_SERVER['HTTP_HOST']; $uri = $_SERVER['PHP_SELF']; header("Location: https://$host$uri"); } Dan halaman login harus selalu mengunakan 3 masukan dari user, yaitu : 1. username 2. password 3. tulisan dalam image (captcha) 6. Daftar koneksi MySQL yg digunakan (nama server, nama database, nama user, password) disimpan dalam 1 file "koneksi.php" untuk memudahkan maintenance dan updating (membuat account ketika MySQL diinstalasi ulang) $conn_selectonly = array ( "server" => "nama_server_yg_melakukan_query", "db" => "nama_database", "user_selectonly => "user_dgn_privilege_select_only", "pass_selectonly => "pass_dgn_privilege_select_only", "user_all => "user_dgn_all_privilege", "pass_all => "pass_dgn_all_privilege"); 7. Query ke suatu tabel di MySQL menyertakan nama database-nya, contoh : $result=mysql_query("select * from $conn_selectonly[db].nama_table"); 8. Query yang menghasilkan result lebih dari 20 row dipecah menjadi banyak halaman dengan menggunakan fasilitas LIMIT, contoh : $result=mysql_query("select * from $conn_selectonly[db].nama_table limit $page,20"); © Institut Manajemen Telkom http://www.imtelkom.ac.id
  • 4. Aturan Untuk Security Beberapa aturan tambahan dalam pembuatan aplikasi di database server level 2 perlu dibuat untuk meningkatkan security, mengingat aplikasi di database server level 2 dapat diakses oleh publik : 9. Setiap parameter yang masuk ke halaman pertama (login dan password) harus selalu di-check dengan fungsi "anti_sql_injection.php" : function check_input($str) { $ch1=strpos($str,',');$ch2=strpos($str,"'");$ch3=strpos($str,'"'); $ch4=strpos($str,';');$ch5=strpos($str,'=');$ch6=strpos($str,'-'); $ch7=strpos($str,'%');$ch8=strpos($str,'$');$ch9=strpos($str,'<'); $ch10=strpos($str,'>'); if (($ch1===false) && ($ch2===false) && ($ch3===false) && ($ch4===false) && ($ch5===false) && ($ch6===false) && ($ch7===false) && ($ch8===false) && ($ch9===false) && ($ch10===false)) {return true;} else {return false;} } 10. Jika jumlah account (login+password) untuk mengakses aplikasi hanya sedikit (kurang dari 5), maka daftar account tersebut disimpan dalam bentuk file ("user.php"), untuk menghindari exhaustive-query yang menyebabkan koneksi ke MySQL habis. $account = array ( "user" => "user1", "pass" => "pass1"); if (($login==$account[user]) && ($pass==$account[pass])) { <aplikasi> } Catatan 1 : jika login gagal (login/pass tidak sesuai dengan daftar account), jangan berikan keterangan apapun untuk mengurangi kemungkinan serangan Brute Force Attack yg mencoba semua kombinasi login+password dan akan berhenti jika keterangan "login gagal" tidak didapatkan lagi. Catatan 2 : file "koneksi.php" di no 6 tidak boleh digabungkan dengan file "user.php" karena account (login+password) untuk mengakses aplikasi harus dibedakan dengan account untuk mengakses MySQL 11. Selalu menggunakan session dalam database setelah login berhasil dengan kemampuan untuk mengeset lifetime dari session 12. Pengecekan alamat IP dari client dilakukan untuk membatasi akses dan mengurangi kemungkinan serangan if (substr($_SERVER['REMOTE_ADDR'],0,6)=='10.14.') { <application> } else {print "Sorry, this feature is available only from intranet";} © Institut Manajemen Telkom http://www.imtelkom.ac.id
  • 5. Catatan : untuk mengurangi serangan Brute Force Attack, alamat IP dari client yg terakhir mengakses dapat disimpan di suatu file beserta kapan waktu mengaksesnya (jam:menit:detik). Jika yg mengakses saat ini memiliki alamat IP yg sama dan selisih waktunya kurang dari 1 detik, maka akses akan ditolak dan alamat IP tsb dilaporkan ke SuperUser untuk di-block menggunakan firewall seperti script di bawah ini : <?php $ip=$_SERVER['REMOTE_ADDR']; $now=time(); settype($now,"integer"); $file = "./last_ip.txt"; $fp = fopen($file,"r"); $row = fgetcsv($fp,100," "); settype($row[1],"integer"); fclose($fp); if (($row[0]==$ip) && (($now-$row[1])<3)) { $fp = fopen($file,"w"); fputs($fp,"$ip $now"); fclose($fp); $fp = fopen("./block.sh","a+"); fputs($fp,"/sbin/ipfw add 100 deny ip from $ip to anyn"); fclose($fp); } else { $fp = fopen($file,"w"); fputs($fp,"$ip $now"); fclose($fp); } ?> Script di atas akan membuat file "block.sh" (di folder yg sama dengan aplikasi) yg berisi command line firewall yg nantinya akan dieksekusi dan dihapus oleh cron : # cat /root/block_BFA.sh /bin/chmod 700 /data/web/block.sh /data/web/block.sh /bin/rm /data/web/block.sh # crontab –l | grep block_BFA.sh */1 * * * * /root/block_BFA.sh © Institut Manajemen Telkom http://www.imtelkom.ac.id
  • 6. Aturan Database Beberapa aturan perlu ditambahkan untuk menjaga struktur database dan tabel yang lebih efisien dan sekaligus menjamin keamanan datanya : 1. Database Manager membuat database dan menyediakan 2 buah account untuk mengakses database tersebut : 1 account dengan hanya privilege "select" 1 account dengan privilege "select, insert, update, delete" 2. Pembuatan dan pengubahan struktur tabel harus seijin Database Manager, untuk mempertahankan kestabilan sistem, efisiensi ruang hard disk, kecepatan pengaksesan data, dan mempermudah penggunaan tabel oleh programmer lain 3. Setiap penamaan program, database, tabel, dan account harus sesuai dengan peruntukannya, agar mudah mengidentifikasi fungsinya jika dibaca oleh user, database manager, maupun programmer lain 4. Type column diusahakan agar NOT NULL untuk mempercepat akses, karena jika ada column yg boleh NULL maka column tsb bisa tidak ada alokasi spasi jika kosong (tidak ada data) 5. Menghindari penggunaan type column variable spt "varchar" untuk mempercepat akses ke suatu record (row) karena "varchar" akan membuat panjang setiap row (record) menjadi tidak sama, sehingga untuk mencari suatu data akan menjadi lebih lama (jika mekanisme akses-nya sekuensial) 6. Selalu membuat index pada primary key untuk mempercepat akses, karena dengan index (versi tabel yg tersorting) mekanisme pencarian tidak lagi sekuensial (berurutan satu demi satu) 7. Membuat tabel sekecil mungkin (dari sisi jumlah field/column dan jumlah record/row) untuk mempercepat akses, karena tabel yg berukuran kecil akan dapat di-load seluruhnya ke memory 8. Selalu menjaga agar tabel selalu tersorting berdasarkan primary key untuk mempercepat akses ke suatu record (row), karena jika record di suatu tabel tidak berurutan maka pencarian akan sekuensial Catatan: rule nomor 16 s.d. 20 mengacu pada manual MySQL, bukan berdasarkan pengalaman maupun eksperimen © Institut Manajemen Telkom http://www.imtelkom.ac.id
  • 7. Contoh Format Dasar <html> <head><title>Judul Aplikasi</title></head> <style> </style> <body> <p class=p1> <?php include("anti_sql_injection.php"); include("user.php"); include("koneksi.php"); if (substr($_SERVER['REMOTE_ADDR'],9) == '10.14.203') { if (check_input($login) && check_input($pass)) { if ($link=mysql_connect("localhost","$user","$password") { $result=mysql_query("select ip from $db.nilai where nim='$login'"); $data=mysql_fetch_array($result,BOTH); print "$data[0]"; } else {print "can not connect to database, please try again later";} } else {print "illegal character found";} } else { print "sorry, you’re not allowed to access this application";} ?> </body> </html> © Institut Manajemen Telkom http://www.imtelkom.ac.id