0% menganggap dokumen ini bermanfaat (0 suara)
14 tayangan8 halaman

Penanganan SQL Injection dan XSS Website

Dokumen ini membahas tentang ancaman keamanan website, khususnya SQL Injection (SQLI) dan Cross-Site Scripting (XSS), serta pentingnya pengujian penetrasi untuk mengidentifikasi dan mengatasi celah keamanan. Penelitian ini dilakukan pada website CV. Merdeka Auto Rental, yang menemukan 12 celah rentan terhadap serangan tersebut dan mengembangkan solusi teknis untuk membersihkan input pengguna. Keamanan website adalah proses berkelanjutan yang memerlukan pembaruan dan edukasi untuk melindungi data sensitif pengguna.

Diunggah oleh

Idlanyer Lazfan
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
14 tayangan8 halaman

Penanganan SQL Injection dan XSS Website

Dokumen ini membahas tentang ancaman keamanan website, khususnya SQL Injection (SQLI) dan Cross-Site Scripting (XSS), serta pentingnya pengujian penetrasi untuk mengidentifikasi dan mengatasi celah keamanan. Penelitian ini dilakukan pada website CV. Merdeka Auto Rental, yang menemukan 12 celah rentan terhadap serangan tersebut dan mengembangkan solusi teknis untuk membersihkan input pengguna. Keamanan website adalah proses berkelanjutan yang memerlukan pembaruan dan edukasi untuk melindungi data sensitif pengguna.

Diunggah oleh

Idlanyer Lazfan
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd

BAB 4

SQL Injection dan XSS – Studi Kasus & Penanganan

(Optimalisasi dalam Penetrasi Testing Keamanan Website Menggunakan Teknik SQL


Injection dan XSS)

4.1 Pendahuluan

Website saat ini tidak hanya berperan sebagai media informasi, tetapi juga menjadi
platform utama untuk transaksi online, seperti pembelian, penjualan, dan pemesanan
barang atau jasa. Karena fungsinya yang vital dan sering menangani data sensitif pengguna-
termasuk informasi pelanggan dan detail transaksi-website menjadi target utama bagi
peretas yang ingin mengeksploitasi celah [Link] terhadap website dapat
terjadi melalui berbagai metode, namun SQL Injection (SQLI) dan Cross-Site Scripting (XSS)
merupakan dua ancaman yang paling sering dijumpai dan berpotensi memberikan akses
tidak sah, pencurian data, perusakan integritas, bahkan pengambilalihan penuh kendali
website oleh pihak tidak bertanggung jawab.

SQL Injection adalah teknik serangan di mana penyerang menyisipkan kode SQL berbahaya
ke dalam parameter input atau URL yang tidak divalidasi dengan benar. Celah ini sering
ditemukan pada form login, pencarian, atau parameter URL yang tidak melakukan
pemeriksaan dan pembersihan data input secara ketat. Jika berhasil, penyerang dapat
mengakses, mengubah, atau menghapus data penting dalam database.

Cross-Site Scripting (XSS) terjadi ketika penyerang memasukkan skrip JavaScript berbahaya
ke dalam website, yang kemudian dijalankan di browser pengguna. XSS umumnya
dilakukan melalui form input atau URL, dan dapat digunakan untuk mencuri data pengguna
seperti cookie atau session ID, hingga mengganggu tampilan dan fungsi website.

Keamanan website menjadi sangat krusial karena dampak serangan bisa sangat merugikan,
baik dari sisi finansial maupun reputasi bisnis. Data pribadi yang bocor, seperti nomor
kartu kredit dan data transaksi, rentan disalahgunakan untuk penipuan atau dijual di pasar
gelap. Serangan juga dapat menurunkan kepercayaan pelanggan dan merusak citra
perusahaan.

Untuk menghadapi ancaman ini, langkah pencegahan yang tepat sangat diperlukan. Salah
satu cara efektif adalah melakukan penetration testing atau uji penetrasi, yaitu proses
mengidentifikasi dan menguji celah keamanan pada aplikasi web menggunakan teknik
serangan nyata seperti SQLI dan XSS. Penelitian ini, misalnya, berfokus pada pengujian
kerentanan website CV. Merdeka Auto Rental terhadap kedua jenis serangan tersebut, serta
mengembangkan solusi berupa fungsi PHP yang dapat membersihkan karakter-karakter
berbahaya dari input pengguna sebelum diproses lebih lanjut.

Selain validasi dan sanitasi input, pengamanan website juga dapat diperkuat dengan:
- Menggunakan enkripsi data untuk melindungi informasi sensitif, seperti dengan algoritma
AES atau RC6.

- Menerapkan protokol keamanan seperti HTTPS/SSL untuk menjaga kerahasiaan data


selama transmisi.

- Menyimpan kata sandi dalam bentuk terenkripsi menggunakan fungsi hashing yang kuat,
bukan dalam bentuk teks biasa.

- Mengatur hak akses file dan direktori di server secara ketat untuk mencegah eksekusi
skrip berbahaya.

- Menggunakan web application firewall (WAF) sebagai perlindungan tambahan terhadap


berbagai serangan aplikasi .

Dengan melakukan uji penetrasi secara berkala dan menerapkan solusi teknis yang tepat,
website dapat terlindungi dari ancaman SQLI dan XSS, sekaligus menjaga integritas,
kerahasiaan, dan kepercayaan pengguna terhadap layanan yang diberikan. Keamanan
website adalah proses berkelanjutan yang memerlukan pembaruan sistem, audit keamanan,
dan edukasi pengguna maupun pengembang secara rutin agar tetap tangguh menghadapi
ancaman siber yang terus berkembang.

4.2 Studi Kasus: SQL Injection (SQLI)

SQL Injection (SQLI) adalah teknik peretasan yang memanfaatkan celah pada aplikasi web,
dengan menyisipkan perintah SQL berbahaya melalui form input atau parameter URL yang
tidak divalidasi dengan benar. Serangan ini memungkinkan peretas untuk mengakses,
mengubah, atau bahkan menghapus data dari database yang terhubung dengan aplikasi
web. Serangan SQL Injection dapat berakibat fatal, mulai dari pencurian data sensitif hingga
kontrol penuh atas database.

Dalam penelitian ini, dilakukan pengujian pada website CV. Merdeka Auto Rental untuk
mendeteksi celah-celah yang rentan terhadap serangan SQLI. Website ini memiliki
beberapa form input yang menerima data dari pengguna, seperti form login, pencarian, dan
input data lainnya. Peneliti melakukan penetration testing untuk mengidentifikasi apakah
form-form tersebut rentan terhadap serangan SQLI.

Langkah-langkah SQLI:

1. Mencari Celah:
Penyerang pertama-tama mencari form input atau parameter URL yang
memungkinkan mereka untuk menyisipkan perintah SQL. Form login, form
pencarian, dan parameter URL dengan tipe input yang tidak divalidasi dengan baik
adalah titik rentan yang sering dieksploitasi oleh peretas. Misalnya, jika form login
atau parameter URL tidak membatasi input pengguna dan menerima karakter-
karakter spesial, ini bisa menjadi celah bagi serangan SQLI.
2. Menyisipkan Payload SQLI:
Setelah menemukan celah, penyerang akan mencoba untuk menyisipkan payload
SQL yang berbahaya ke dalam input form atau parameter URL. Sebagai contoh,
payload yang sering digunakan adalah `1' OR '1'='1`, yang bertujuan untuk
mengubah logika query SQL yang dieksekusi oleh database. Dalam hal ini, query
yang sebelumnya mengecek kecocokan username dan password akan diubah
menjadi `TRUE`** (karena `1=1` selalu benar), memungkinkan peretas untuk masuk
ke dalam sistem tanpa kredensial yang sah.
3. Mengakses Data:
Setelah payload dieksekusi, peretas dapat mengakses atau mengubah data yang ada
di dalam database. Misalnya, jika serangan SQLI berhasil, peretas dapat memperoleh
akses ke tabel data pelanggan, transaksi, atau informasi sensitif lainnya yang
seharusnya dilindungi. Dalam beberapa kasus, peretas dapat menghapus data atau
mengubah informasi di dalam database untuk tujuan jahat.

Temuan Penelitian:

Pada penelitian ini, ditemukan 12 celah yang rentan terhadap serangan SQLI pada website
CV. Merdeka Auto Rental. Form login adalah salah satu bagian yang teridentifikasi rentan,
selain beberapa form input lainnya yang tidak melakukan validasi input dengan baik.
Pengujian penetrasi menunjukkan bahwa, dengan memanfaatkan teknik SQLI, peretas
dapat dengan mudah mengakses database dan mendapatkan data yang seharusnya tidak
boleh diakses.

Gambar 4: Pseudocode SQLI Form Login


Diagram atau pseudocode yang menggambarkan tahapan SQLI pada form login, termasuk
langkah-langkah yang diambil peretas untuk mengeksploitasi kerentanannya,
menggunakan karakter spesial seperti tanda kutip (') atau tanda pagar (#).

4.3 Studi Kasus: Cross-Site Scripting (XSS)

Cross-Site Scripting (XSS) adalah teknik serangan di mana peretas menyisipkan skrip
JavaScript berbahaya ke dalam halaman web yang dijalankan di browser pengguna. Skrip
ini dapat mencuri data sensitif seperti cookies, session ID, atau informasi pribadi lainnya
yang disimpan di browser korban. XSS terjadi ketika aplikasi web gagal memvalidasi atau
menyaring input pengguna dengan benar, memungkinkan skrip berbahaya untuk disisipkan
ke dalam halaman yang ditampilkan kepada pengguna lain.

Langkah-langkah XSS:

1. Mencari Celah: Penyerang mencari form input atau URL yang tidak memvalidasi
atau menyaring data masukan pengguna. Form komentar, pencarian, atau
parameter URL adalah tempat yang umum digunakan oleh peretas untuk
menyisipkan payload XSS.
2. Menyisipkan Payload XSS: Payload seperti
<script>alert([Link]);</script> disisipkan dalam form input atau URL
yang akan dieksekusi oleh browser pengguna.
3. Eksekusi di Browser Pengguna: Ketika korban mengunjungi halaman yang
mengandung skrip berbahaya, skrip tersebut akan dijalankan di browser mereka,
mencuri data sensitif seperti cookies atau sesi pengguna.

Gambar 5: Pseudocode XSS


Menunjukkan bagaimana payload XSS dapat disisipkan untuk mengeksploitasi celah
pada form input dan dijalankan di browser pengguna.

4.4 Penanganan dan Pencegahan SQLI dan XSS:

Setelah melakukan pengujian penetrasi, penulis mengembangkan fungsi PHP khusus yang
bertujuan untuk mengatasi kerentanan terhadap serangan SQL Injection (SQLI) dan Cross-
Site Scripting (XSS) pada website CV. Merdeka Auto Rental. Fungsi ini bekerja dengan cara
membersihkan dan menghapus karakter-karakter berbahaya yang sering digunakan dalam
payload serangan, sehingga input yang mencurigakan dapat diblokir sebelum mencapai
sistem inti aplikasi. Dengan metode ini, aplikasi web menjadi lebih tangguh dalam
menghadapi upaya eksploitasi dari pihak yang tidak bertanggung jawab.

Pencegahan SQL Injection (SQLI)

1. Prepared Statements & Parameterized Queries

Penggunaan prepared statements dan parameterized queries merupakan teknik utama


dalam menanggulangi SQL Injection. Dengan cara ini, data yang dimasukkan pengguna akan
dipisahkan dari perintah SQL, sehingga tidak dapat dijalankan sebagai bagian dari query.
Hal ini membuat upaya penyisipan kode berbahaya menjadi tidak efektif, karena struktur
query sudah ditentukan sebelumnya dan input hanya dianggap sebagai data, bukan
perintah.

2. Validasi & Sanitasi Input

Validasi input memastikan hanya data dengan format yang diizinkan yang dapat diterima
oleh sistem. Misalnya, jika sebuah form hanya menerima angka, maka karakter lain secara
otomatis akan ditolak. Sanitasi input dilakukan untuk menghilangkan karakter atau pola
yang berpotensi membahayakan. Dengan validasi dan sanitasi yang ketat, potensi
eksploitasi celah SQLI dapat ditekan secara signifikan.

3. Escaping Karakter

Selain validasi, teknik escaping digunakan untuk menambahkan karakter pelindung pada
input yang mengandung karakter spesial, seperti tanda kutip tunggal atau ganda. Fungsi
seperti `mysqli_real_escape_string()` di PHP akan memproses input pengguna sehingga
karakter berbahaya tidak akan mempengaruhi jalannya query SQL.

Pencegahan Cross-Site Scripting (XSS)


1. Sanitasi Input & Output Escaping

Untuk mencegah XSS, input dari pengguna harus disaring dan output harus di-escape
sebelum ditampilkan di halaman web. Fungsi seperti `htmlspecialchars()` digunakan untuk
mengubah karakter-karakter khusus menjadi entitas HTML yang aman, sehingga browser
tidak akan mengeksekusi kode berbahaya yang mungkin disisipkan oleh penyerang.

2. Content Security Policy (CSP)

CSP adalah kebijakan keamanan tambahan yang dapat diterapkan melalui pengaturan
header HTTP. Dengan CSP, pengembang dapat menentukan sumber daya eksternal mana
saja yang boleh dimuat oleh browser. Ini membatasi kemungkinan skrip berbahaya dari
domain luar untuk dijalankan di dalam aplikasi, sehingga risiko XSS dapat diminimalisir.

3. Validasi Data

Setiap data yang diterima dari pengguna harus divalidasi agar sesuai dengan format yang
diharapkan. Misalnya, input yang seharusnya berupa URL harus diverifikasi menggunakan
filter khusus agar tidak ada skrip berbahaya yang lolos ke sistem.

Hasil dan Manfaat Penerapan

Dengan penerapan fungsi PHP yang memfilter dan membersihkan input pengguna, celah
keamanan yang sebelumnya ditemukan pada website CV. Merdeka Auto Rental dapat
diatasi secara efektif. Tidak hanya SQLI dan XSS yang berhasil dicegah, namun aplikasi web
juga memperoleh lapisan perlindungan tambahan yang membuatnya lebih tahan terhadap
ancaman serupa di masa mendatang.

Selain itu, penerapan teknik-teknik ini juga meningkatkan kepercayaan pengguna terhadap
keamanan website, karena data mereka terlindungi dari upaya pencurian maupun
manipulasi. Namun, perlu diingat bahwa keamanan aplikasi web adalah proses yang
berkelanjutan. Pengembang harus terus memperbarui strategi dan melakukan pengujian
keamanan secara rutin, karena pola serangan siber terus berkembang seiring waktu.
Dengan demikian, aplikasi web akan selalu berada dalam kondisi aman dan siap
menghadapi berbagai ancaman baru yang mungkin muncul di masa depan.

4.5 Kesimpulan

Melalui proses pengujian penetrasi yang dilakukan pada website CV. Merdeka Auto Rental,
ditemukan sebanyak 12 celah keamanan yang mayoritas berkaitan dengan kerentanan
terhadap serangan SQL Injection (SQLI) dan Cross-Site Scripting (XSS). Celah-celah ini
terutama terdapat pada beberapa form input, seperti form login, pencarian, dan komentar,
yang tidak memiliki validasi input yang memadai. Kurangnya validasi menyebabkan
aplikasi web menjadi rentan terhadap manipulasi data oleh pihak yang tidak bertanggung
jawab.
Serangan SQL Injection terjadi ketika aplikasi menerima input dari pengguna tanpa
melakukan pemeriksaan atau pembersihan karakter-karakter yang berpotensi
membahayakan. Pada kasus ini, form login dan beberapa form lainnya menjadi titik rawan,
di mana penyerang dapat memasukkan perintah SQL berbahaya ke dalam input dan
mendapatkan akses tidak sah ke database, bahkan berpotensi mengubah atau menghapus
data penting.

Sementara itu, serangan Cross-Site Scripting (XSS) muncul akibat kegagalan aplikasi dalam
menyaring input pengguna yang mengandung skrip berbahaya. Dengan teknik XSS,
penyerang bisa menyisipkan skrip JavaScript ke dalam form komentar atau pencarian,
sehingga skrip tersebut dijalankan di browser korban. Hal ini memungkinkan pencurian
data sensitif seperti cookies, session ID, atau bahkan mengambil alih akun pengguna.

Setelah dilakukan implementasi fungsi PHP script yang bertugas untuk membersihkan dan
memfilter input pengguna dari karakter-karakter berbahaya, kerentanan terhadap SQLI dan
XSS pada website ini berhasil diatasi. Fungsi ini memastikan bahwa data yang masuk ke
sistem atau ditampilkan pada halaman web sudah aman, sehingga serangan yang
sebelumnya dapat dilakukan kini tidak lagi berhasil. Dengan demikian, tingkat keamanan
website meningkat secara signifikan dan risiko eksploitasi oleh penyerang dapat
diminimalisir.

Namun, perlu diingat bahwa penggunaan fungsi PHP script ini hanya efektif untuk
menangkal SQLI dan XSS. Masih terdapat potensi ancaman lain seperti Cross-Site Request
Forgery (CSRF), Server-Side Request Forgery (SSRF), dan berbagai jenis serangan siber
lainnya yang tidak dapat diatasi hanya dengan filter input. Oleh karena itu, pengamanan
website sebaiknya dilakukan secara berlapis, dengan menambahkan mekanisme
perlindungan lain seperti penggunaan token CSRF, pembaruan perangkat lunak secara
rutin, serta monitoring dan audit keamanan secara berkala.

Keamanan aplikasi web merupakan proses yang dinamis dan berkelanjutan. Pengujian
penetrasi dan penerapan solusi seperti filter input hanyalah langkah awal dalam
membangun pertahanan yang kuat. Pengembang harus terus memantau perkembangan
ancaman keamanan terbaru dan secara proaktif memperbarui sistem serta memperbaiki
celah yang ditemukan. Dengan pendekatan ini, website tidak hanya terlindungi dari
serangan SQLI dan XSS, tetapi juga dari berbagai ancaman keamanan yang mungkin muncul
di masa mendatang. Dengan demikian, integritas, kerahasiaan, dan ketersediaan data pada
website CV. Merdeka Auto Rental dapat terjaga dengan baik.

Daftar Pustaka
Halfond, W. G. J., & Orso, A. (2007). Detection and Prevention of SQL Injection Attacks. In M.
Christodorescu, S. Jha, D. Maughan, D. Song, & C. Wang (Eds.), Malware Detection (Vol. 27,
pp. 85–109). Springer US. [Link]

Kumar, S., Mahajan, R., Kumar, N., & Khatri, S. K. (2017). A study on web application security
and detecting security vulnerabilities. 2017 6th International Conference on Reliability,
Infocom Technologies and Optimization (Trends and Future Directions) (ICRITO), 451–455.
[Link]

Risky, M. A. Z., & Yuhandri, Y. (2021). Optimalisasi dalam Penetrasi Testing Keamanan
Website Menggunakan Teknik SQL Injection dan XSS. Jurnal Sistim Informasi dan Teknologi,
215–220. [Link]

Anda mungkin juga menyukai