Perbedaan Antara Authentication dan Authorization

Authentication dan Authorization, kelihatan sama tapi berbeda, dari penulisannya saja sudah berbeda. Bagi yang ingin menambah pengetahuan tidak ada salahnya menyimak atau membaca artikel ini, yang tidak sengaja saya temukan dari web tetangga [ilmuhacking].

authauthorization

.
.
.

Pemahaman akan authentication dan authorization sangat penting karena semua proses security berpusat pada dua hal itu.

Banyak orang yang masih bingung dengan kedua istilah penting itu. Banyak yang mengira bahwa authentication dan authorization itu sama, padahal keduanya sangat berbeda.
Salah satu tujuan dari security adalah menjamin agar resource hanya boleh diakses oleh orang yang berhak dan orang yang berhak itu bisa mengakses resource tanpa halangan.

Bayangkan dalam satu pesawat umum terdapat dua kelas penumpang, yaitu kelas VIP dan kelas ekonomi. Prosedur dan proses security harus menjamin agar penumpang menempati tempat duduk sesuai haknya. Untuk itu penumpang harus menunjukkan bukti berupa tiket yang di situ tertera namanya. Kemudian dari daftar penumpang pramugari akan tahu bahwa anda berhak duduk di kelas VIP atau ekonomi. Bila anda memegang tiket ekonomi mencoba duduk di kelas VIP maka pramugari akan menolak anda. Apalagi bila anda tidak memegang tiket, mencoba naik pesawat itu, sudah pasti anda akan ditendang.

Authentication: Proof That You are Who You Claim to Be

Sebelum bisa memberikan layanan kepada pengguna, penyedia layanan perlu tahu siapa anda. Jika anda menyatakan bahwa anda adalah Tukul Arwana, maka buktikanlah bahwa anda memang Tukul. Proses membuktikan siapa anda (identitas) inilah yang disebut authentication. Bila authentication berhasil, maka akan terjalin hubungan trust antara pemberi layanan dan pengguna layanan.

Salah satu bukti identitas yang bisa diterima adalah informasi rahasia. Logikanya adalah bila ada orang yang bisa menyebutkan suatu rahasia yang tidak mungkin orang lain tahu kecuali Tukul, maka saya akan yakin bahwa orang itu adalah benar-benar Tukul.

Bukti identitas lain yang bisa diterima adalah sesuatu yang unik, hanya dimiliki oleh satu orang saja di seluruh dunia. Logikanya adalah bila ada orang yang membawa barang yang hanya mungkin dimiliki Tukul, maka saya akan yakin bahwa dia adalah benar-benar Tukul. Dalam film kungfu cina biasanya pejabat utusan Kaisar akan membawa stempel kerajaan. Stempel ini adalah metode authentication yang sangat ampuh. Siapa saja yang memegang stempel itu otomatis identitasnya dijamin sebagai utusan kaisar.

Metode authentication yang berbasis pada kerahasiaan informasi adalah:

Password/PIN: Hanya pemiliknya yang tahu password/pin.
Digital Certificate: Berbasis pada asymmetric cryptography yang mengandung informasi rahasia yaitu private key.
Private Key: Hanya pemiliknya yang tahu private key, orang lain hanya tahu public key.
Sedangkan metode authentication yang berbasis pada keunikan adalah:

Retina: Tidak mungkin ada 2 orang yang pola retinanya sama.
Fingerprint: Tidak mungkin ada 2 orang yang sidik jarinya sama.
Paspor: Hanya pemiliknya yang bisa menunjukkan foto di paspor sesuai dengan wajahnya.
Tandatangan: Hanya pemiliknya yang bisa menuliskan tandatangan dengan sempurna.
Setelah terjalin hubungan trust, selanjutnya layanan apa yang bisa dinikmati pengguna tergantung dari proses authorization.

Authorization: What are You Allowed to Do

Authorization adalah proses menentukan apa sajakah layanan yang bisa dinikmati pengguna yang telah jelas identitasnya (authenticated user). Jadi sebelum ada authorization, harus melalui proses authentication. Identitas yang telah dibuktikan di proses authentication menjadi dasar untuk menentukan layanan yang berhak dinikmati seorang pengguna.

Logikanya adalah tanpa mengetahui siapa anda, saya tidak tahu apa saja yang boleh dan tidak boleh untuk anda. Jadi tanpa authentication tidak ada authorization. Contohnya setelah saya tahu anda adalah Tukul Arwana, maka saya tahu anda boleh memandu acara empat mata, dan tidak boleh memandu di acara Dorce Show. Biasanya pengguna yang tidak ter-otentikasi (anonymous guest) tetap bisa menikmati layanan, namun dengan akses yang sangat terbatas.
authauthorization

Hubungan antara client,server,authentication dan authorization system bisa dilihat pada gambar di atas. Client sebelum bisa menikmati layanan server harus melalui proses authentication. Setelah authentication berhasil akan terjalin hubungan trust antara client dan server sehingga cukup sekali saja authentication sampai client logout/keluar. Selanjutnya setiap ada permintaan layanan, server akan menghubungi system authorization untuk menentukan apakah client tersebut berhak atas layanan yang dimintanya.

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.

 

Menangani application.ini tidak terpanggil di Zendframework 1.12

Pada beberapa layanan hosting fungsi untuk pemanggilan file ini tidak izinkan alias di disabled dengan alasan keamanan atau belum tersetting. Akibatnya, zendframework tidak bisa berjalan karena konfigurasi ini tidak terpanggil seperti bawaan seharusnya.

Untuk itu beberapa jurus alternatif harus di keluarkan, caranya adalah dengan melakukan suntikan langsung pada library/zend/config/ini.php di zend untuk file ini. sehingga mengalami perubahan kode menjadi berikut.

protected function _parseIniFile($filename)
{
set_error_handler(array($this, ‘_loadFileErrorHandler’));
// $iniArray = parse_ini_file($filename, true); // Warnings and errors are suppressed
$iniArray = array
(
“production” => array (
“phpSettings.display_startup_errors” => 1,
“phpSettings.display_errors” => 1,
“includePaths.library” => APPLICATION_PATH . “../library”,
“bootstrap.path” => APPLICATION_PATH . “/Bootstrap.php”,
“bootstrap.class” => “Bootstrap”,
“appnamespace” => “Application”,
“resources.frontController.controllerDirectory” => APPLICATION_PATH . “/controllers”,
“resources.frontController.params.displayExceptions” => 1,
“phpSettings.date.timezone” => “Asia/Jakarta”,
“resources.layout.layoutPath” => APPLICATION_PATH . “/layouts/scripts”,
“resources.view” => array
(
0 => “”
)

),
“staging : production” => array
(
),
“testing : production” => array
(
“phpSettings.display_startup_errors” => 1,
“phpSettings.display_errors” => 1
),
“development : production” => array
(
“phpSettings.display_startup_errors” => 1,
“phpSettings.display_errors” => 1,
“resources.frontController.params.displayExceptions” => 1
),
“db” => array
(
“db.adapter” => “mysql”,
“db.params.host” => “localhost”,
“db.params.username” => “root”,
“db.params.password” => “”,
“db.params.dbname” => “mydb”
)

);

restore_error_handler();

Memang agak terlihat kurang rapih, tapi ini berhasil untuk di jalankan.

Wassalam.

Menjalankan Zendframework 1 Didalam Sub Folder

Secara default zendframework di operasikan dalam domain atau subdomain.
Namun, kadang kebutuhan bisa di panggil dalam sub folder. Agar dapat dijalankan dalam sub folder salah satu jalan adalah dengan melakukan konfigurasi pada htaccess pada direktory public seperti pada kode berikut.

RewriteCond %{REQUEST_FILENAME} !project/public/.*
RewriteRule ^project/(.*)$ project/public/$1 [NC,L]

RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /project/public/index.php [NC,L]

semoga bermanfaat, wassalam.

Berita Hoak ?

di Era digital sekarang ini sedang marak dengan yang namanya berita hoak di media sosial. Penulis jadi ingin mencoba mengupasnya. Mungkin yang masih belum tau akan binggung dengan istilah ini, seperti saya dulu.

icon-hoak

Apa itu Hoak ? Hoak adalah berita atau informasi yang tidak benar alias bohong.

Siapa yang menjadi sasaran Hoak ? yaitu orang yang polos tidak tahu apa-apa jadi sasaran dan di manfaatkan oleh penyebar hoak.

Tujuan Hoak ? Adapun tujuannya bermacam-macam tergantung dari pelaku mulai dari untuk iseng-iseng, menipu agar tercapai suatu tujuan seperti dipilih jadi salah satu gubernur dan lain-lain.

Apa media untuk menyebar Hoak ? alat untuk menyebarkan hoak kebanyakan dilakukan melalui media sosial tapi tidak menutup kemungkinan media seperti Televisi pun bisa menjadi alat penyebar hoak yang efektif, kembali ke pada si pelaku dan niatnya tadi.

Apa yang harus kita lakukan ? yang pasti adalah selalu memvalidasi kebenaran berita yang nyampai ke kita. Jika berita itu benar dan positif maka kita bisa share, jika sebaliknya jangan di bagikan, kalau bisa diluruskan berita hoak tersebut semampu kita kepada yang lain.

Bagai mana sudah terlanjur menyebarkan berita hoak ? saran saya adalah tobat bang.

Semoga bermanfaat, jika ada info yang kurang tolong dikoreksi, wassalam.

Terimakasih.

 

Membuat Dropdown Menu On Hover di Bootstrap

Secara default Navigator Menu Atau Dropdown Menu akan memunculkan submenunya ketika diklik. Namun, bagaimana caranya jika Dropdown menu akan muncul ketika mouse berada diatas menu, yakni dengan menambahkan kode javascript berikut.

 

 <[removeSpace]script type="text/javascript">
 $('ul.nav li.dropdown').hover(function() {
 $(this).find('.dropdown-menu').stop(true, true).delay(200).fadeIn(500);
 }, function() {
 $(this).find('.dropdown-menu').stop(true, true).delay(200).fadeOut(500);
 });
 <[removeSpace]/script>

 

catatan : hapus tulisan [removeSpace]

Ok, semoga bermanfaat, wassalam :-).

Filter Display Image Dengan File .htaccess

Ketika membuat sebuah web, biasanya terdapat sebuah folder atau direktori yang dibuat khusus untuk menampung file-file yang diupload seperti gambar atau dokumen. Namun, kadang kita ingin membatasi hanya file-file dengan ekstension tertentu yang bisa dipanggil atau di tampilkan di browser, misal hanya gambar yang berformat png saja yang bisa di panggil, sedangkan dengan format seperti jpg, jpeg dll, tidak bisa.

endang-web-htaccess

Untuk melakukan filter tersebut, kita bisa menggunakan file .htaccess.

.
.
.
.

.htaccess, merupakan sebuah file text sederhana(dalam format ascii). Pada umumnya kita bisa menggunakan file .htaccess untuk merubah beberapa konfigurasi untuk mengarahkan pada web server apache.

.
.
.
.

berikut contoh kode file .htaccess, yang dimana file tersebut disimpan dalam folder yang terdapat file-file yang akan kita filter.

order allow,deny
<Files ~ “\.(PNG|png)$”>
allow from all
</Files>

kode diatas berfungsi agar file dengan ekstension png saja yang bisa di panggil atau ditampilkan di browser, ekstension selain dari itu tidak akan tampil. Wassalam.

 

 

 

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.