PHP Password Hash

Password hash di php adalah algoritma untuk fungsi crypt kurang lebih sama dengan md5.

password_hash() creates a new password hash using a strong one-way hashing algorithm. password_hash() is compatible with crypt(). Therefore, password hashes created by crypt() can be used with password_hash().

Namun password hash hanya bisa berjalan di versi php 5 keatas.

(PHP 5 >= 5.5.0, PHP 7)

password_hash — Creates a password hash

Jika menggunakan versi php selain itu akan muncul error seperti ini.

endangcahyapermana-password-hash

susunan output karakter contoh nya adalah sebagai berikut

endangcahyapermana-algoritma

Advertisements

Cara mengaktifkan fungsi file_get_contents() and fopen() dengan kondisi default setting allow_url_fopen off

Kadang menemukan kondisi dimana server hosting mematikan fungsi file_get_contents() dan fopen() secara default dengan tujuan untuk pengamanan dari file injection. Namun, biasanya hosting masih memungkin kan untuk melakukan konfigurasi untuk website secara khusus untuk konfigurasi php.ini.  Artinya website dapat membuat konfigurasi php.ini sendiri. Sebagai contoh adalah  mengaktifkan fungsi file_get_contents() and fopen() berikut.

Buatlah php.ini dengan isi seperti dibawah.

allow_url_fopen = On

kemudian copy file tersebut kedalam folder etc di root hosting. lalu coba panggil yang menggunakan fungsi tersebut untuk mengujinya. Mudah-mudahan bermanfaat, wassalam.

Cara sederhana membuat kode random dengan php

Kode random atau acak adalah sebuah kode acak yang biasanya terdiri dari angka dan huruf. Dapat digunakan untuk membantu kebutuhan verifikasi sebuah transaksi, contohnya verifikasi email untuk registrasi akun member baru, sehingga data registrasi bisa cek validasi data dan keamanan transaksi pun lebih terjamin.

Untuk membuat kode random di php tidak lah sulit, cukup satu bari seperti dibawah ini.

$random_hash = md5(uniqid(rand(), true));

apabila karakter kode kepanjangan anda bisa potong dengan menggunakan substr di php. sekian dan terimakasih, wassalam.

Kode untuk melihat direktori dan file di browser dengan PHP

Sekedar untuk pengetahuan dan menambah wawasan koding php anda. berikut adalah contoh script php sederhana untuk melihat direktori dan file di direktori hosting dengan memanggil url di browser.

berinama index.php

<?php
if(isset($_REQUEST[‘dir’])) {
$current_dir = strip_tags($_REQUEST[‘dir’]);
} else {
$current_dir = ‘uploads’;
}

$current_dir = str_replace(“..”, “”, $current_dir);
$current_dir = str_replace(“.”, “”, $current_dir);

if ($handle = opendir($current_dir)) {
$arr_current_dir = explode(“/”, $current_dir);
if(count($arr_current_dir) > 0) {
$arr_prev_path = array();
for($i = 0; $i < count($arr_current_dir) – 1; $i++) {
$arr_prev_path[] = $arr_current_dir[$i];
}
$prev_path = implode(“/”, $arr_prev_path);
echo ($current_dir == “uploads”) ? “” : ‘<[hapus]a href=”index.php?dir=’ . $prev_path . ‘”> … ‘ . “\n</a><br/><br/>”;
}
while (false !== ($file_or_dir = readdir($handle))) {
if(in_array($file_or_dir, array(‘.’, ‘..’))) continue;
$path = $current_dir . ‘/’ . $file_or_dir;
if(is_file($path)) {
echo ‘<[hapus]a href=”/’ . $path . ‘”>’ . “<[hapus]img src=’document-icon.png’/ > ” . $file_or_dir .”\n</a><br/>”;
} else {
echo ‘<[hapus]a href=”index.php?dir=’.$path.'”>’ . “<[hapus]img src=’folder-document-icon.png’/ > ” . $file_or_dir . “\n</a><br/>”;
}
}
closedir($handle);
}
?>

dengan kode tersebut direktori dan isi file bisa dilihat seperti di explorer dan selain itu file yang ada bisa anda download. semoga bermanfaat. wassalam…

Cara Mudah Koneksi PHP dengan Database Postgree

Berikut adalah cara mudah untuk membuat kode koneksi dari program php dengan database Postgree atau Pgsql.

Syaratnya sudah pasti php dan database postgree sudah terpasang.

Bagaimana script kodenya, caranya adalah seperti dibawah ini.

<?php

// connecting, selecting database
// anda harus sesuaikan dbnam, user dan password sesuai dengan setting pada database server anda

$conn_string = “host=127.0.0.1 port=5432 dbname=nama_database user=nama_user password=password_user”;

$connection = pg_connect($conn_string);

if (!$connection) {
print(“Connection Failed”);
exit;
}
else print(“Connection Success”);
?>

Selamat mencoba, semoga bermanfaat, wassalam

Contoh Sederhana Edit string HTML dengan DOMDocument di PHP

DOMDocument merupakan salah satu fungsi PHP untuk mengedit variabel string text yang berisi tag-tag HTML secara otomatis atau online dengan script PHP yang sudah disediakan. berikut contoh penggunaan DOMDocument untuk mengambil tag img dan menset image default jika sumber nama tidak ditemukan.

// init dom document
$dom = new DOMDocument();
$dom->loadHTML($string);

// get dom img
$tags = $dom->getElementsByTagName(‘img’);

foreach ($tags as $tag) {

// replace style img empty
$tag->setAttribute(“style”, “”);
// get src
$src = $tag->getAttribute(‘src’);
$file_name = str_replace(“%20″, ” “, basename($src));

if($file_name==””) {

$src_default = “/images/no-found.png”;
$tag->setAttribute(“src”, $src_default);

}
}

$string = $dom->saveHTML();

semoga bermanfaat. wassalam.

Mengenal Cookies PHP

Cookies dapat dimanfaatkan dalam aktivitas hack sebuah web. Namun, bagi yang masih belum kenal dengan cookies ini, mari kita gali apa itu cookies?

Cookies digunakan untuk menyimpan informasi yang dibutuhkan sebuah website dan ditaruh pada komputer client. Singkatnya Cookies ini hampir sama dengan Session namun tidak disimpan pada server melainkan pada komputer client.

Kode Sederhana Koneksi PHP dan SQL

Hal sederhana dalam pengenalan php salah satunya adalah membuat koneksi dari php dengan database MySQL seperti contoh kode berikut.

<[removeThis]?php

$link = mysql_connect(‘localhost’, ‘root’, ”);
if (!$link) {
die(‘Could not connect: ‘ . mysql_error());
}
echo ‘Connected successfully’;

//select a database to work with
$selected = mysql_select_db(“database”, $link)
or die(“Could not select database”);

//execute the SQL query and return records
$result = mysql_query(“SELECT username FROM user”);
//fetch tha data from the database
while ($row = mysql_fetch_array($result)) {
echo $row{‘username’}.”<br>”;
}
?>

Kode diatas juga bisa di pergunakan untuk tujuan pengecekan apakah php dan mysql sudah terhubung atau belum jika sebuah project besar terpasang dan menemukan masalah error.

 

PHP Security : Shell Injection

Selain sql injection, salah satu jenis serangan lainnya yang perlu di ketahui dan diantisipasi bagi web developer adalah berupa web shell injection. Nah, apa itu Web shell injection ?

Web shell ini merupakan kumpulan script  yang dapat mengeksekusi perintah shell. Setiap web shell bentuknya berbeda-beda tergantung dari web server itu sendiri. Misal, jika web servernya apache maka web shell nya berbentuk script PHP dan bentuk script shell nya dikenal dengan PHP shell injection.

PHP shell injection adalah sebuah tindakan untuk melakukan eksploitasi terhadap celah keamanan sebuah website dengan cara menginjeksi Shell hasil pengkodean bahasa PHP terhadap file yang terdapat pada website tersebut yang memiliki kelemahan ataupun kesalahan pemrograman/pengkodean.

.
.
.
.

web-shell-php-injection

Contoh shell yang sudah jadi dan beredar di dunia maya, diantaranya yaitu :

b374k (indonesia)
dQ99-shell
c99 (rusia)
r57
phpShell
itsecteam-shell
Bypass
safeOver
phpShell
itsecteam-shell
Tyrag-Bypass
c100
ASPx
CMD-aspshell
CWShell-Dumper
CGI-Shell

Cara menjalankan web shell, file tersebut harus di sisipkan terlebih dahulu di web server  dalam direktori target. Salah satu, metode upload file adalah Remote File Inclusion atau dikenal dengan disingkat RFI.

.
.
.
.

Cerita singkat Remote File Inclusion. RFI merupakan metode untuk mengeksploitasi web dengan memanfaatkan file yang sudah ada pada file tersebut untuk mengeksekusi file yang diluar web.

Gambaran contoh sederhananya adalah sebagai berikut. Ada sebuah web yang proses eksekusinya menggunakan satu file yang memanggil file yang lain untuk melengkapinya melalui alamat web, seperti berikut :

http://www.target-web.com/?page=artikel.php

pada alamat diatas, tulisan artikel.php, adalah file php yang akan di masukan kedalam script php untuk di proses. kodenya bisa seperti ini.

<?php
$page=$_GET[“page”];
if($page==””){
include “home.php”;
}
include $page.”.php”;
?>

cerita selanjutnya perintah script php di artikel.php akan di eksekusi di dalam kode tersebut. permasalahan cara diatas adalah memungkinkan orang lain untuk memasukan kode selain artikel.php, isinya bebas.

Teman dari RFI adalah LFI atau Local File Inclusion, yaitu hampir sama dengan RFI, namun bedanya RFI memanfaatkan file diluar web, sedangkan LFI memanfaatkan file yang sudah tersimpan di internal server seperti file sistem  /etc/passwd untuk untuk system operasi linux.

Bagaimana cara untuk melindungi web dari serangan RFI atau LFI ? antisipasi untuk menangkal serang ini diantaranya adalah dengan script yang terupdate, lalu pastikan php.ini register_globals dan allow_url_fopen dinonaktifkan.

.
.
.
.

Setelah berhasil di simpan di direktori server, maka hacker bisa memanggilnya dengan cara mengakses file tersebut melalui browser, contoh pemanggilannya :

http://www.target-web.com/c99.php

http://www.target-web.com/  — alamat domain target

c99.php — file php shell injection

.
.
.
.

terlihat cukup mudah, namun butuh latihan untuk dapat melakukannya.

 

PHP Security : SQL Injection

 

sql-injection

 

SQL Injection, istilah yang sudah tidak asing lagi dikalangan web programmer. Namun tidak ada salahnya di bahas kembali dari nol. Mulai dari Apa itu SQL injection ?

Saya coba cuplik dari web tetangga untuk pengertian ini yang menurut saya mudah dicernanya, isinya kurang lebih berikut.

SQL injection adalah serangan yang memanfaatkan kelalaian dari website yang mengijinkan user untuk menginputkan data tertentu tanpa melakukan filter terhadap malicious character.

Sedangkan yang dimaksud dengan malicious yaitu suatu program yang dapat dieksekusi dan dibuat dengan tujuan untuk merusak sistem komputer, jadi  dapat di katakan kode tersebut bersifat jahat/perusak.

Jadi dengan kata lain, dari definisi diatas sudah dapat dilihat bahwa tujuan seseorang melakukan serangan sql injection ini adalah salah satunya merusak sistem, dan yang menjadi target serangan adalah database sistem.

Cukup berbahaya apabila database tersebut memiliki data-data yang bersifat penting. Hal untuk mengantisipasinya sederhana, mudah saja, lakukan backup database secara rutin, itu !

Motif seseorang melakukan serangan adalah beragam, dari hal yang serius sampai hal yang iseng ada seperti coba-coba atau lagi belajar, bisa jadi ingin kepuasan. wallohualam. Namun, bagi yang coba-coba harus ingat, semua tindakan ada konsekuensinya, catet.

Apa manfaat mempelajari ini? tujuannya belajar sql injection adalah untuk mengetahui dan mengantisipasi serangan dan bukan sebaliknya.

Sampai sini teman-teman mudah-mudahan dapat memahami maksud dari pengertian sql injection ini.

.
.
.
.

Bagaimana cara seseorang melakukannya?
Untuk melakukan sql injection, orang tersebut harus sudah memahami tentang query dan database dan yang berkenaan dengan web (html, php, … dst), kurang lebih seperti itu.

.
.
.
.

Sebagai bentuk contoh sql injection seperti berikut.

Skenarionya adalah untuk menghapus tabel user pada sebuah tabel.

.
.
.
.

Awalnya ada perintah query untuk menampilkan data pada tabel user seperti ini.

select * from user where username = ‘admin’ and password=’admin’;

jika di eksekusi maka akan tampil data dengan username admin.

Namun, apabila kemudian coba di inject sql

‘; drop table user; —

— drop table user untuk menghapus tabel

menjadi seperti dibawah.

select * from user where username = ”; drop table user; — admin’ and password=’admin’;

maka proses yang terjadi adalah tabel user menjadi terhapus, karena ada sisipan sql drop.

… ‘; drop table user; — admin’ …

itu baru sebagian contoh kecil gambaran perintah sql injection.