PROMOSI

Ingin memasang Jaringan internet menggunakan Lan atau membuat Hotspot tetapi tidak bisa??jangan berkecil hati,, anda bisa memanggil jasa kami, kami menerima istalasi jaringan dengan berbagai macam model, Segera hubungi ManiaTech)_21 di Contact Person/SMS di 085250900648 (Rendra)Berlaku di Kota Bontang (Kalimantan Timur)

Bingung dengan Komputer yang Lelet, Serba Error dan hampir punah??Jangan berkecil Hati Segeralah ke ManiaTech_21 Computer,., ManiaTech_21 menerima Servise Komputer maupun Laptop, Menjual Hardware, Software, Perakitan Komputer, dsbg,,Segeralah Hubungi Maniatech_21 di Contact Person/SMS di 085250900648 (Rendra)Berlaku di Kota Bontang (Kalimantan Timur).



Bagi yang ingin Merental Studio Musik, Rental Alat Band, Rental Sound System, Rekaman Album, Dan juga Ingin membeli Alat Band dengan Kualitas Impor maupun Ekspor dapat menghubungi Studio BM ataupun Contact Person/ SMS di 085250900648 (Rendra).Berlaku di Kota Bontang (Kalimantan Timur)

04 September 2009

Keamanan Login Pada Web php

Sumber : spyrozone

Tulisan ini diperuntukan bagi para newbie yang ingin membuat system login pada webnya dengan php. Saya akan melampirkan beberapa hal dasar yang harus kita perhatikan ketika membuat system login beserta contoh script sederhana. Apa yg akan saya paparkan berikut ini sebenarnya sangat umum dan dapat diperoleh dari berbagai sumber yang berhub dgn php. Semoga dapat memberi sedikit info tambahan untuk newbie-newbie baru.Ok langsung kita mulai.

Berikut ini hal-hal yg harus kita pertimbangkan ketika membuat login:
1.Pastikan form login adalah form dari server kita.
2.Amankan input text untuk user dan password,metoda dan format data.
3.Hindari penggunaan register global (untuk php v 4.2.0 keatas sdh disable).
4.Expired time dari login yang dilakukan.
5.Pastikan file yang tidak boleh diakses tidak dapat dipanggil secara langsung.

Sekarang contoh dari script untuk hal-hal tersebut.Saya hanya melampirkan satu logika dari banyak kemungkinan lain dalam membuatnya.Logika ini akan sangat beragam jadi bukanlah satu-satunya cara ataupun cara yang paling baik,silahkan buat sendiri untuk yg lebih baik atau lihat referensi lain.

1.Pastikan form login berasal dari server kita:

//file ini bernama index.php
login
Username:
Password:
”>“>
//fungsi untuk meng-enkripkan token memakai fungsi md5 function enc_token($token) { $hash = md5($token); return $hash; } ?>

//akhir script index.php

-saat membuat form login(ex: index.php)sebagai default kita mulai dengan membuat session baru.
-session_name disini sebagai refrensi untuk session id di cookies dan URL.
-lalu daftarkan suatu variabel session baru SES_TOKEN dgn memakai fungsi session_register.
-Buat token berupa kata acak yg akan kita gunakan utk memastikan form-adalah dari kita.
-Lalu Encript token agar lebih rumit.(Pada dasarnya token ini mirip dgn session id)
-Tambahkan variabel enkript token tsb dalam form melalui hidden.
-Lalu pada file “cekmasuk.php” kita lakukan pemeriksaan apakah data yg kita terima dari form yg kita buat sebelumnya, akan saya jelaskan pada script cekmasuk.php.

2.Amankan input text untuk user dan password,metoda dan format data.
Pada saat kita menerima data maka sebelum kita olah data tersebut(utk kasus ini adalah user dan password),maka harus kita pastikan data tersebut tidak disisipi niat jahat. Untuk itu maka kita buat suatu fungsi filter,fungsi ini akan kita gunakan pada script
cekmasuk.php yang akan saya lampirkan diakhir.
//fungsi filter

function filter($word) { $word = stripslashes(trim($word)); $word = nl2br($word); $word = htmlentities($word); return $word ; }

Ini hanya contoh simple dengan memanfaatkan fungsi yg ada di php.Kita dapat tambahkan dengan membuat fungsi sendiri, misalkan filter kata-kata kotor(dijasakom sudah ada yg melampirkan),atau memanfaatkan regex untuk validasi yg lain.Silahkan berkreasi.

3.Hindari penggunaan register global (untuk php v 4.2.0 keatas sdh disable/off).
Untuk hal ini maka kita dapat memperoleh data yg dikirim melalui predefine variabel milik php,yaitu:
$HTTP_GET_VARS(untuk metoda get).
$HTTP_POST_VARS(untuk metoda post).dan masih ada lagi yg lainnya.

4.Expired Time dari login yang dilakukan.
Setiap login yg dilakukan user sering kali mereka tidak melakukan logout,hanya mendiamkan atau malah meninggalkan ketika masih login.Oleh karena itu expired time ini adalah wajib dalam sistem login.
Script secara lengkap akan ada pada script “cekmasuk.php”.

$refresh_time=10; //dalam menit $chour = date(”H”); //jam $cmin = date(”i”); //menit $csec = date(”s”); //detik $cmon = date(”m”); //bulan $cday = date(”d”); //tanggal $cyear = date(”Y”); //tahun
//waktu saat ini ketika mengakses $ctimestamp = mktime($chour,$cmin,$csec,$cmon,$cday,$cyear);
//penambahan waktu mengakses akan digunakan untuk expired time $ttimestamp = mktime($chour,$cmin+$refresh_time,$csec,$cmon,$cday,$cyear);

5.Pastikan file yang tidak boleh diakses tidak dapat dipanggil secara langsung.
Berikan fungsi berikut disetiap awal script yg tdk anda inginkan dapat diakses langsung

if(ereg(’cekmasuk.php’, $SCRIPT_NAME)) { header(”Location: http://domainanda.com/index.php”); die; }
/********************************************************************/ // //script akan menerima metoda post dari index.php //file ini bernama cekmasuk.php
{ header(”Location: http://domainanda.com/index.php”); die;

}

if($submit and $user<>”" and $password<>”")

{ session_name(”secretsession”); session_start(); switch ($_POST['form']) { case ‘login’: $allowed = array(); $allowed[] = ‘form’; $allowed[] = ‘user’; $allowed[] = ‘password’; $allowed[] = ‘enctoken’; $allowed[] = ’submit’; $sent = array_keys($_POST); if ($allowed == $sent) { if($_POST['enctoken']<>$SES_TOKEN)//periksa apakah form berasal dari kita atau session yg sama { //jika tidak maka kembali ke form session_destroy(); header(”Location: http://domainanda.com/index.php”); exit; }
else { $clean_user=filter($_POST['username']);//bersihkan inputan $clean_password=filter($_POST['password']); //definisi waktu untuk expired time if (authentication($clean_user,$clean_password))//cek user dalam database { $refresh_time=10; //dalam menit $chour = date(”H”); //jam $cmin = date(”i”); //menit $csec = date(”s”); //detik $cmon = date(”m”); //bulan $cday = date(”d”); //tanggal $cyear = date(”Y”); //tahun $ctimestamp = mktime($chour,$cmin,$csec,$cmon,$cday,$cyear); $ttimestamp = mktime($chour,$cmin+$refresh_time,$csec,$cmon,$cday,$cyear); session_register(”SES_PASSWORD”);//daftarkan session variabel baru session_register(”SES_USERNAME”); session_register(”SES_HASH”); session_register(”T_TIMESTAMP”); $T_TIMESTAMP=$ttimestamp; $hashtoken=createRandomtoken();//buat token baru untuk disisipkan dalam setiap page system login
$enchash=enc_token($hashtoken);//token ini akan memastikan page hanya yg dari server dengan session yg sama $SES_HASH=$enchash; $SES_USERNAME=$clean_user; $SES_PASSWORD = $clean_password; } else { unset ($submit); unset ($user); unset ($password); } } } break; } } else { session_name(”secretsession”); session_start(); opendb(); $query= “select * from $table_admin where nama=’$SES_USERNAME’”;//misalkan
database user ada pd table admin $hasil= querydb($query); $data= mysql_fetch_array($hasil); closedb(); $USERNAME = $data["nama"]; $PASSWORD = $data["password"]; $HASH_TOKEN=$hash_token;
//untuk exired timed $refresh_time=10; //dalam menit $chour = date(”H”); //jam $cmin = date(”i”); //menit $csec = date(”s”); //detik $cmon = date(”m”); //bulan $cday = date(”d”); //tanggal $cyear = date(”Y”); //tahun $ctimestamp = mktime($chour,$cmin,$csec,$cmon,$cday,$cyear); $ttimestamp=$T_TIMESTAMP; if ($ttimestamp < $ctimestamp) { session_unregister(”SES_PASSWORD”); session_unregister(”SES_USERNAME”); session_unregister(”SES_HASH”); session_unregister(”T_TIMESTAMP”); session_destroy(); header(”Location: http://domainanda.com/index.php”); exit; } $ttimestamp = mktime($chour,$cmin+$refresh_time,$csec,$cmon,$cday,$cyear); $T_TIMESTAMP=$ttimestamp; }

/********************************************************************/ //mulai fungsi pendukung function authentication($user, $pass) { global $table_admin; opendb(); $query=”select * from $table_admin where nama=’$user’”; opendb(); $hasil=querydb($query); closedb(); $data = mysql_fetch_array($hasil); $pass_inDB=$data["password"]; $enc_pass = md5($pass); if($pass_inDB == $enc_pass) { return TRUE; } else { return FALSE; } closedb(); } ?>
/********************************************************************/

Script tersebut dapat kita gunakan pada page yg berada dalam system login,ex: udahmasuk.php Maka dapat kita memanfaatkan dengan cara berikut:

//File ini bernama udahmasuk.php
-Fungsi opendb(),querydb(),closedb() adalah fungsi yg sy buat utk akses database,silahkan anda buat sendiri.
-Dengan menggunakan script tersebut bukan berarti kita telah membuat system login yg aman.Ingat ini hanya”Beberapa Hal Dasar”.
-Penambahan kata rahasia pada pembentukan token bisa menambah tingkat kesukaran untuk di tebak.
-Akhir kata seluruh hasil script tersebut bukanlah murni pemikiran saya tetapi merupakan penggabungan dari berbagai script yg sudah ada baik dari contoh help php, dan beberapa tulisan lain diantaranya adalah milik Chris Shiflett dan Jeff Johns.
-Untuk lebih jelas bagaimana memakai fungsi yg ada silahkan “RTFM”.
-Agar lebih mendalami masalah keamanan php silahkan kunjungi Chris Shiflett artikel di http://shiflett.org
-Tulisan Jeff Johns dapat anda lihat di http://www.phpfreaks.com

Meng-koneksikan Java dengan MySQL menggunakan JDBC

Java Database Connectivity (JDBC) merupakan teknologi inti di dalam Java untuk mengakses
dengan database. JDBC digunakan baik dalam aplikasi desktop, aplikasi Web maupun aplikasi
enterprise.

JDBC menyediakan satu cara untuk mengakses database secara independen terhadap database
vendor. Melalui JDBC Anda bisa mengakses mySQL dengan program yang sama untuk
mengakses Oracle, UDB2 dan PostgreSQL. Ini mendukung semangat Java untuk write once, run
anywhere.

Kunci utama dari JDBC adalah JDBC Driver yang bertanggung jawab menjadi jembatan antara
program Java dan database tertentu. JDBC Driver untuk mySQL, misalnya, bertanggung jawab
untuk menjembatani antara program yang ditulis dengan Java ke mySQL RDBMS.

Untuk mengakses database melalui JDBC, pertama Anda perlu mendapatkan obyek Connection.
Selanjutnya Anda bisa mendapatkan obyek-obyek seperti Statement dan PreparedStatement.
Melalui Statement, dan PreparedStatement , Anda bisa mengirimkan perintah SQL ke database,
seperti INSERT, SELECT, UPDATE dan DELETE.

Contoh program yang meng-koneksikan java dengan mysql.

import java.io.*;
import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class insertFrame extends JFrame implements ActionListener
{
JLabel l_nopol=new JLabel(”NOMOR POLISI”);
JLabel l_nama=new JLabel (”NAMA PEMILIK”);
JLabel l_alamat=new JLabel (”ALAMAT”);
JLabel l_merk=new JLabel (”MERK/TIPE”);
JLabel l_jenis=new JLabel (”JENIS/MODEL”);
JLabel l_pembuatan=new JLabel (”TAHUN PEMBUATAN”);
JLabel l_perakitan=new JLabel (”TAHUN PERAKITAN”);
JLabel l_isi=new JLabel (”ISI SILINDER (cc)”);
JLabel l_warna=new JLabel (”WARNA”);
JLabel l_norangka=new JLabel (”NOMOR RANGKA/NIK”);
JLabel l_nomesin=new JLabel (”NOMOR MESIN”);
JLabel l_nobpkb=new JLabel (”NOMOR BPKB”);
JLabel l_wrntnkb=new JLabel (”WARNA TNKB”);
JLabel l_bbm=new JLabel (”BAHAN BAKAR”);
JLabel l_kode=new JLabel (”KODE LOKASI”);
JLabel l_nourut=new JLabel (”NO.URUT PENDAFTARAN”);

/*Tabel*/
String[] jenisStrings={”SPM/SEPEDA MOTOR”,”MBL/MOBIL”,”TRUK”,”BUS”};
String[] bbmStrings={”BENSIN”,”SOLAR”};
String[] kodeStrings={”01″,”02″,”03″,”04″,”05″};

/*TextField*/
JTextField t_nopol=new JTextField (”");
JTextField t_nama=new JTextField (”");
JTextField t_alamat=new JTextField (”");
JTextField t_merk=new JTextField (”");
JComboBox c_jenis=new JComboBox (jenisStrings);
JTextField t_pembuatan=new JTextField (”");
JTextField t_perakitan=new JTextField (”");
JTextField t_isi=new JTextField (”");
JTextField t_warna=new JTextField (”");
JTextField t_norangka=new JTextField (”");
JTextField t_nomesin=new JTextField (”");
JTextField t_nobpkb=new JTextField (”");
JTextField t_wrntnkb=new JTextField (”");
JComboBox c_bbm=new JComboBox (bbmStrings);
JComboBox c_kode=new JComboBox (kodeStrings);
JTextField t_nourut=new JTextField (”");

/*Tombol*/
JButton b_insert=new JButton(”SIMPAN”);
JButton b_keluar=new JButton(”KELUAR”);

/*Kontener*/
Container container=new Container();

/*Variabel String*/
String nopol=”";
String nama=”";
String alamat=”";
String merk=”";
int jenis=0;
String pembuatan=”";
String perakitan=”";
String isi=”";
String warna=”";
String norangka=”";
String nomesin=”";
String nobpkb=”";
String wrntnkb=”";
int bbm=0;
int kode=0;
String nourut=”";

/*Input*/
insertFrame()
{
super(”INPUT DATA PEMBAYARAN PAJAK STNK”);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
container=getContentPane();
container.setLayout(new GridLayout(18,6));

c_jenis.setSelectedIndex(0);
c_jenis.addActionListener(this);
c_bbm.setSelectedIndex(0);
c_bbm.addActionListener(this);
c_kode.setSelectedIndex(0);
c_kode.addActionListener(this);

b_insert.addActionListener(this);
b_keluar.addActionListener(this);

/*objek windows*/
container.add(l_nopol);
container.add(t_nopol);
container.add(l_nama);
container.add(t_nama);
container.add(l_alamat);
container.add(t_alamat);
container.add(l_merk);
container.add(t_merk);
container.add(l_jenis);
container.add(c_jenis);
container.add(l_pembuatan);
container.add(t_pembuatan);
container.add(l_perakitan);
container.add(t_perakitan);
container.add(l_isi);
container.add(t_isi);
container.add(l_warna);
container.add(t_warna);
container.add(l_norangka);
container.add(t_norangka);
container.add(l_nomesin);
container.add(t_nomesin);
container.add(l_nobpkb);
container.add(t_nobpkb);
container.add(l_wrntnkb);
container.add(t_wrntnkb);
container.add(l_bbm);
container.add(c_bbm);
container.add(l_kode);
container.add(c_kode);
container.add(l_nourut);
container.add(t_nourut);
container.add(b_insert);
container.add(b_keluar);

pack();show();
}

public void actionPerformed(ActionEvent event)
{
if(event.getSource()==b_insert)
{
try {
nopol=t_nopol.getText();
nama=t_nama.getText();
alamat=t_alamat.getText();
merk=t_merk.getText();
jenis=c_jenis.getSelectedIndex();
pembuatan=t_pembuatan.getText();
perakitan=t_perakitan.getText();
isi=t_isi.getText();
warna=t_warna.getText();
norangka=t_norangka.getText();
nomesin=t_nomesin.getText();
nobpkb=t_nobpkb.getText();
wrntnkb=t_wrntnkb.getText();
bbm=c_bbm.getSelectedIndex();
kode=c_kode.getSelectedIndex();
nourut=t_nourut.getText();

Class.forName(”org.gjt.mm.mysql.Driver”);
Connection
connection=DriverManager.getConnection(”jdbc:mysql://localhost/gandhi?user=root pwd=root”); ——–> koneksi dengan mysql menggunakan user root dan password root.
Statement statement=connection.createStatement();
String sql=”insert into pajak values(’”+nopol+”‘,’”+nama+”‘,’”+alamat+”‘,’”+merk+”‘,’”+jenis+”‘,’”+pembuatan+”‘,;

‘”+perakitan+”‘,’”+isi+”‘,’”+warna+”‘,’”+norangka+”‘,’”+nomesin+”‘,’”+nobpkb+”‘,’”+wrntnkb+”‘,’”+bbm+”‘,;

‘”+kode+”‘,’”+nourut+”‘);”;

statement.executeUpdate(sql);
statement.close();
System.out.println(”Data Yang Anda Masukkan Telah Tersimpan”);
}
catch(Exception e) {System.out.println(”Error : “+e);}
}

if(event.getSource()==b_keluar)
{
System.exit(0);
}

}
}

public class coba
{
public static void main(String args[])
{
new insertFrame();
}
}

NB : untuk mengkoneksikan java dengan mysql,

kita perlu menyetting pada JCreator–>applikasi untuk membuat java file.

jcreator.gif

Selain itu kita juga harus memiliki file mysql-connector-java-3.1.6-bin—-> file inilah yang digunakan sebagai connector.

Langkah-langkahnya seperti gambar di bawah ini :

Pertama : pilih tab Configure, pilih Options

java_option.gif

Langkah kedua : pilih JDK Profiles, jika belum ada klik New, dan cari folder j2sdk1.41 pada drive dimana anda menginstalnya.

option.gif

Langkah ketiga : pilih add archive —-> tempat dimana file mysql-connector-java-3.1.6-bin berada.

option2.gif

Langkah keempat : memasukkan file mysql-connector-java-3.1.6-bin, setelah itu klik Ok, Apply.

option3.gif

Nah, sekarang anda dapat mengkoneksikan java dengan database mysql. Selamat mencoba…