112 Jurnal Teknik Informatika dan Sistem Informasi ISSN 2407-4322 Vol. 10, No. 3, September 2023, Hal. 112-119 E-ISSN 2503-2933
Received June25th, 2012; Accepted July 10th,
http://jurnal.mdp.ac.id [email protected]
Perlindungan Form Website Pada Framework Flask Dengan Metode Regular Expression
Mahendra Chevro Susanto
Teknik Informatika, Universitas Bina Insani; Jl. Raya Siliwangi No.6 Rawa Panjang Kota Bekasi, fax 021-82436886
e-mail: [email protected]
Abstrak
Penelitian ini bertujuan untuk mengetahui penggunaan metode regular expression dalam melindungi form website pada framework flask. Pola regular expression yang digunakan dalam penelitian ini ialah ^[a-zA-Z0-9@]+$. Dalam penelitian ini, pengujian dilakukan dengan menggunakan metode black box testing Teknik Equivalence Partitioning untuk membuat kriteria pengujian dalam inputan form website. Hasil pengujian black box testing menghasilkan dua harapan ialah “Data Aman” dan “Data Tidak Aman”. Hasil penelitian ini menunjukan bahwa penggunaan metode Regular Expression dalam perlindungan form website dapat menjadi opsi pilihan untuk memfilter inputan form. Dengan Regular Expression memungkinkan untuk melakukan validasi data yang diinput pengguna dan mencegah inputan berbahaya dengan menghapus karakter-karakter yang tidak valid.
Kata kunci: Ekspresi Reguler, Framework Flask, Python, Cross Site Scripting, Injection
Abstract
This research aims to find out the use of regular expression methods in protecting website forms on the flask framework. The regular expression pattern used in this research is
^[a-zA-Z0-9@]+$. In this study, testing was carried out using the black box testing method Equivalence Partitioning technique to create test criteria in website form input. The results of black box testing produce two expectations, namely "Secure Data" and "Insecure Data". The results of this study indicate that the use of the Regular Expression method in website form protection can be an option for filtering form input. Regular Expression makes it possible to validate the data inputted by users and prevent malicious input by removing invalid characters.
Keywords: Regular Expression, Framework Flask, Python, Cross Site Scripting, Injection
1. PENDAHULUAN
Keamanan merupakan urusan yang esensial dan utama yang harus diperhatikan dalam merancang aplikasi Web. Data maupun informasi menjadi sasaran bagi penyerang untuk disalahgunakan, maka dari itu sangat penting untuk menjaga integritas data dan informasi.
Dalam merancang aplikasi web diperlukan sistem yang bisa melindungi data dari pengguna yang tidak berwenang. Sistem ini berupa proses login untuk identifikasi akun pengguna yang benar-benar sah.
Namun membuat proses login saja tidak cukup karena banyak macam jenis-jenis serangan yang digunakan oleh orang tidak bertanggung jawab untuk bisa masuk ke aplikasi web tanpa harus otentikasi data [1]. Teknik yang paling popular sampai saat ini ialah serangan
Mahendra Chevro Susanto [Perlindungan Form Website pada Framework Flask Dengan Metode Regular Expression]
Title of manuscript is short and clear, implies research results (First Author) Injeksi SQL. Sekitar 274 ribu aplikasi berhasil dibobol dengan menggunakan Teknik Injeksi dan menjadi kerentanan teratas urutan nomor tiga dalam catatan OWASP 2021.
Gambar 1. Daftar Kerentanan Paling Populer Tahun 2021
Berdasarkan gambar 1, terlihat daftar top 10 kerentanan paling popular yang bersumber dari komunitas Open Web Application Security Project (OWASP) yakni komunitas yang berpusat di Meryland Amerika Serikat yang didirikan oleh Mark Curphey dan Dennis Groves.
Proyek ini bertujuan untuk meningkatkan keamanan perangkat lunak aplikasi yang dilakukan dari pengujian OWASP menggunakan parameter penilaian yang berfungsi untuk mengukur tingat suatu resiko kerentanan [2].
Selain Teknik injeksi SQL ada juga Teknik lain yaitu Cross Site Scripting (XSS). XSS merupakan Teknik yang melakukan pengiriman payload berupa kode javascript yang disisipkan pada suatu inputan Website. XSS menyerang kelamahan website yang tidak memvalidasi data inputan yang dikirimkan oleh pengguna. Pengaruh dari Teknik XSS yakni seorang peretas dapat mendapatkan hak akses website yang nantinya dapat melihat isi data dan informasi milik pengguna lain [3]. Berdasarkan hasil dari penelitian yang dilakukan oleh [4], pencegahan serangan injeksi SQL dapat dikukan dengan membuat suatu validasi yang dapat mendeteksi adanya string query (select, #, -- -, from where) maka sistem akan menolak permintaan dari client. Selanjutnya untuk pencegahan serangan XSS dapat membuat validasi penggunaan simbol seperti (“<>”, “/”) pada form input, maka payload XSS tidak dapat aktif didalamnya [4].
Adapun yang dikemukakan oleh [1] bahwa melakukan mitigasi serangan oleh orang tidak bertanggung jawab yakni memberikan filter dari kode sumber sampai dengan menggunakan verifikasi robot.
Dari penelitan yang dilakukan oleh [5] rekomendasi pengamanan website dari serangan injeksi SQL yakni form inputan harus dilakukan sanitasi untuk membersihkan karakter selain huruf alphabet dan angka. Ini dilakukan karena peretas menggunakan Payload berupa spesial karakter yang dimasukkan ke dalam form website. Penelitian yang dilakukan oleh [6] salah satu metode yang digunakan untuk mengamankan form webiste ialah White List input Validation, metode tersebut melibatkan penggunaan daftar putih untuk memvalidasi input yang diterima oleh form. Dalam penelitian ini untuk melakukan sanitasi atau filter inputan menggunakan metode Regular Expression untuk membuat pola kalimat yang diizinkan kedalam form website.
Sehingga percobaan terhadap semua kemungkinan pola tidak perlu dilakukan. Regex sudah
114 Jatisi ISSN 2407-4322 Vol. 10, No. 3, September 2023, Hal. 112-119 E-ISSN 2503-2933
Mahendra Chevro Susanto [Perlindungan Form Website pada Framework Flask Dengan Metode Regular Expression]
banyak didukung oleh Bahasa pemrograman seperti PHP, Perl, Golang, Python dan lain-lain.
Regex sangat bisa diandalkan karena dapat mencari sebuah penggalan kata dan pada level tinggi Regex bisa memanipulasi data seperti mencari, menghapus dan merubah data [7].
Terdapat beberapa Bahasa pemrograman yang bisa digunakan untuk membuat suatu sistem informasi berbasis Website. Salah satu Bahasa pemrograman yang saat ini mulai popular digunakan untuk membuat aplikasi ialah Python [8]. Python merupakan Bahasa pemrograman yang banyak digunakan oleh para programmer untuk mengembangkan aplikasi dengan berbagai macam bidang, khususnya yang berurusan dengan matematika dan sains. Aplikasi yang dapat dibuat bisa dalam bentuk console, GUI, dan Web [9]. Untuk membuat aplikasi berbasis web, ada beberapa framework yang dapat digunakan oleh pengembang agar mempermudah dan mempercepat proses pembuatan aplikasi web, diantaranya: Django, Flask, Bottle, CherryPy, Web2Py, Pyramid dan lain-lain. Dari beberapa framework, yang popular dan banyak digunakan oleh pengembang ialah Django dan Flask [8].
Dalam penelitian ini, akan dibuat simulasi berbasis Website yang akan dibangun menggunakan framework Flask. Flask merupakan kerangka kerja yang dibuat untuk mempermudah para pengembang aplikasi web. Flask dikembangkan oleh Armin Ronacher yang memimpin International Team of Python Enthusiasts. Contoh perusahaan yang sudah menggunakan Flask sebagai framework aplikasi ialah: Pinterest, LinkedIn dan Youtube.
Adapun pustaka tambahan yang digunakan dalam penelitian ini ialah Flask-WTF dan modul bawaan dari python yang disebut re, sebagai penggunaan Regular Expression. Flask-WTF merupakan Pustaka sumber terbuka yang dibuat dengan Bahasa pemrograman Python. Saat ini sudah digunakan lebih dari 128 ribu pengguna github dan merilis versi 1.0.0 pada tahun 2021.
Pustaka ini banyak digunakan karena sudah terintegrasi dengan Flask dan WTForms untuk mengamankan Form dalam Website. Fitur yang ada dalam Pustaka ini meliputi: Secure Form With CSRF Token, Global CSRF Protection, reCAPTCHA, dan File Upload.
Pada penelitian yang dilakukan oleh [10] hasil pengujian dilakukan menggunakan program Java dengan kelas java.util.regex.Matcher dan java.util.regex.Pattern yang merupakan bagian dari pustaka Java untuk bekerja dengan Regular Expressions. Dalam penelitian ini menggunakan Pustaka Flask-WTF sebagai pemrosesan data dari form website. Modul re berfungsi untuk mendefinisikan sebuah pola pencarian yang biasa disebut dengan Regular Expression (Regex), yang nantinya digunakan dalam penelitian ini untuk memfilter karakter sensitif dalam pemrosesan form website.
Penelitian ini memiliki tujuan untuk mengetahui apakah regex bisa melindungi form dari serangan injeksi SQL dan XSS atau tidak. Sehingga penelitian ini dapat diterapkan oleh developer sebagai opsi untuk menjaga keamanan form dalam website menggunakan metode Regular Expression sebagai mitigasi serangan oleh peretas.
2. METODE PENELITIAN
Metode yang digunakan dalam penelitian ini yakni Regular Expression (Regex) sebagai filter karakter yang tidak diizinkan dalam form website dan untuk pengujian keamanan menggunakan Teknik black box testing dengan tujuan menentukan apakah hasil dari perlidungan dengan regex dapat berfungsi dengan baik atau tidak. Untuk pembuatan simulasi website menggunakan Bahasa pemrograman Python dan framework yang digunakan yaitu Flask. Adapun Pustaka tambahan yakni Flask-WTF untuk pemrosesan dan validasi data dari form website. Selanjutnya akan dijelaskan lebih rinci apa saja kegunaan metode dan alat yang digunakan dalam penelitian ini.
Mahendra Chevro Susanto [Perlindungan Form Website pada Framework Flask Dengan Metode Regular Expression]
Title of manuscript is short and clear, implies research results (First Author) 2.1 Regular Expression (Regex)
Regular Expression atau yang dikenal dengan sebutan Regex adalah rangkaian kata yang didefinisikan berdasarkan pola yang dibuat sehingga pola tersebut bisa digunakan untuk mencocokan, menemukan, dan mengelola teks [11]. Konsep Regex diperkenalkan oleh Stephen Colo Kleene, matematikawan asal Amerika yang dimulai pada tahun 1950an [12]. Fungsi dari regex untuk mendeteksi suatu pola dinamis dalam rangkaian kata. Adapun Untuk membuat pola regex perlu mengetahui beberapa dasar dari meta karakter yang nantinya digunakan untuk membuat suatu pola string. Tabel 1 menjelaskan beberapa dasar dari meta karakter di dalam regex.
Tabel 1. Meta Karakter Regex
Karakter Keterangan Contoh Hasil
^ Awal Kata ^kam kamu, kampus, kampung
[ ] Satu Set Karakter [a-m] [‘k’,’a’,’m’], [‘k’,’a’,’m’], [‘k’,’a’,’m’,’g’]
. Semua Karakter,
Kecuali Baris Baru ka.p.s [‘kampus’]
$ Akhir Kata kampus Semua kata yang diakhiri
dengan ‘kampus’
| Operasi OR kuliah|kampu
s
Kata yang mengandung
‘kuliah’ atau ‘kampus’
+ Tambah (ab)+ ab, abab, ababab
Dapat dilihat pada tabel 1 beberapa meta karakter untuk membuat pola regex. Dalam penelitian ini menggunakan meta karakter ^ [] dan $, yang nantinya digunakan untuk memfilter teks yang diperbolehkan dalam form aplikasi web. Jadi pola regex yang digunakan dalam penelitian yakni ^[a-zA-Z0-9@]+$, yang artinya hanya huruf kecil, huruf besar, angka dan simbol @ saja yang diperbolehkan untuk diinput.
2.2 Black Box Testing
BlackBox merupakan pengujian aplikasi tanpa harus mengetahui aplikasi lebih rinci, seperti bagaimana proses penyajian data keluaran pada sistem yang dibuat [13]. Metode ini berfokus pada keluaran hasil dari programnya, bukan dari bagaimana proses program itu berjalan. Jenis pengujian BlackBox yang digunakan dalam penelitian ini yaitu Equivalence Partitioning (EP).
Teknik Equivalence Partitioning adalah pengujian yang berdasarkan inputan data pada setiap form dalam aplikasi [14]. Dalam penelitian ini untuk mendapatkan hasil pengujian akan dibuatkan rancangan tabel Test Case yang berfungsi untuk menyimpulkan apakah form berhasil dalam pengujian kriteria tersebut atau tidak.
116 Jatisi ISSN 2407-4322 Vol. 10, No. 3, September 2023, Hal. 112-119 E-ISSN 2503-2933
Mahendra Chevro Susanto [Perlindungan Form Website pada Framework Flask Dengan Metode Regular Expression]
Gambar 2. Demo Form Login
Berdasarkan form login pada gambar 2 terdapat beberapa rencana pengujian. Untuk rencana pengujian Username Ketika memasukkan data akan valid jika diisi dengan masukan huruf abjad dan angka maupun gabungan dari huruf atau angka seperti “user123”, selain itu akan terdeteksi tidak valid dan akan muncul pemberitahuan “Data Tidak Aman”.
Rencana pengujian Password ketika memasukkan data akan valid jika diisi dengan masukan huruf abjad, angka dan spesial karakter hanya simbol @ maupun gabungan seperti
“pass@123”, selain itu akan terdeteksi tidak valid dan akan muncul pemberitahuan “Data Tidak Aman”.
Tabel 2. Rancangan Test Case Form Login
ID Penjelasan Hasil yang Diharapkan
LGN1 Mengisi Username dengan “user123”
dan password “pass@123” kemudian klik button Login.
Menampilkan pemberitahuan “Data Aman” karena sesuai dengan kriteria yang diizinkan.
LGN2 Mengisi Username dengan “user123”
dan password “pass123” kemudian klik button Login
Menampilkan pemberitahuan “Data Aman” karena sesuai dengan kriteria yang diizinkan.
Pada tabel 2, rancangan test case dibuat seperti biasa saja dalam artian data yang dimasukkan oleh user masih normal. Pada tabel 3 akan dibuat rancangan test case yang berisi payload yang umum dimasukkan oleh peretas untuk memeriksa apakah sistem memiliki celah pada Form input atau tidak.
Tabel 3. Rancangan Test Case Payload
ID Penjelasan Hasil yang Diharapkan
PYL1
Mengisi Username dengan
“<script>alert(1)</script>” dan Password “pass123” kemudian klik button Login.
Menampilkan pemberitahuan “Data Tidak Aman” karena tidak sesuai dengan kriteria yang diizinkan.
PYL2 Mengisi Username dengan “user123”
dan Password
Menampilkan pemberitahuan “Data Tidak Aman” karena tidak sesuai dengan kriteria
Mahendra Chevro Susanto [Perlindungan Form Website pada Framework Flask Dengan Metode Regular Expression]
Title of manuscript is short and clear, implies research results (First Author)
“<script>alert(1)</script>” kemudian klik button Login
yang diizinkan.
PYL3
Mengisi Username dengan “" OR 1 = 1 -- -“ dan Password “pass123”
kemudian klik button Login
Menampilkan pemberitahuan “Data Tidak Aman” karena tidak sesuai dengan kriteria yang diizinkan.
PYL4
Mengisi Username dengan “user123”
dan Password “" OR 1 = 1 -- -“
kemudian klik button Login
Menampilkan pemberitahuan “Data Tidak Aman” karena tidak sesuai dengan kriteria yang diizinkan.
3. HASIL DAN PEMBAHASAN
Berdasarkan rencana pengujian yang telah dibuat pada bagian metode penelitian, dapat dilihat hasilnya pada tabel 4 dibawah ini.
Tabel 4. Rancangan Test Case Payload
ID Hasil yang Diharapkan Hasil Pengujian
LGN1
Menampilkan pemberitahuan “Data Aman” karena sesuai dengan kriteria yang diizinkan.
Data berhasil diinput dan sesuai dengan yang diharapkan
LGN2
Menampilkan pemberitahuan “Data Aman” karena sesuai dengan kriteria yang diizinkan.
Data berhasil diinput dan sesuai dengan yang diharapkan
PYL1
Menampilkan pemberitahuan “Data Tidak Aman” karena tidak sesuai dengan kriteria yang diizinkan.
Data tidak berhasil diinput dan sesuai dengan yang diharapkan
PYL2
Menampilkan pemberitahuan “Data Tidak Aman” karena tidak sesuai dengan kriteria yang diizinkan.
Data tidak berhasil diinput dan sesuai dengan yang diharapkan
PYL3
Menampilkan pemberitahuan “Data Tidak Aman” karena tidak sesuai dengan kriteria yang diizinkan.
Data tidak berhasil diinput dan sesuai dengan yang diharapkan
PYL4
Menampilkan pemberitahuan “Data Tidak Aman” karena tidak sesuai dengan kriteria yang diizinkan.
Data tidak berhasil diinput dan sesuai dengan yang diharapkan
4. KESIMPULAN
Berdasarkan hasil pengujian pada tabel 4 dapat ditarik kesimpulan bahwa perlindungan form website dengan metode Regular Expression bisa menjadi pilihan untuk mengamankan form dari serangan peretas. Namun masih banyak cara untuk peretas melakukan bypass filtering yang sudah dideklarasikan dengan Regular Expression. Sehingga perlu adanya pengembangan pola Regular Expression untuk mengamankan form inputan website.
118 Jatisi ISSN 2407-4322 Vol. 10, No. 3, September 2023, Hal. 112-119 E-ISSN 2503-2933
Mahendra Chevro Susanto [Perlindungan Form Website pada Framework Flask Dengan Metode Regular Expression]
5. SARAN
Penelitian yang mendatang perlu adanya pengembangan pola regular expression untuk memperbolehkan inputan spesial karakter lebih banyak lagi namun data inputan masih tetap aman dari serangan peretas. Adapun saran dari peneliti ialah membandingkan hasil pengamanan website yang dibuat secara native menggunakan regeluar expression dengan menggunakan pustaka tambahan.
DAFTAR PUSTAKA
[1] S. P. Sitorus and R. A. Habibi, 2020, Teknik Pencegahan Penetrasi SQL Injeksi Dengan Pengaturan Input Type Number dan Batasan Input pada Form Login Website, U-NET Jurnal Teknik Informatika, Vol. 4, No. 2, Hal 26–33.
[2] T. Revolino Syarif and D. Andri Jatmiko, Analisis Perbandingan Metode Web Security Ptes, Issaf dan Owasp di Dinas Komunikasi dan Informasi Kota Bandung, E-Library Unikom.
[3] M. A. Z. Risky and Y. Yuhandri, 2021, Optimalisasi Dalam Penetrasi Testing Keamanan Website Menggunakan Teknik SQL Injection dan XSS, Jurnal Sistim Informasi dan Teknologi, Vol. 3, No. 4, Hal 215–220.
[4] Sanjaya, I., Sasmita, G., & Arsa, D., 2020, Evaluasi Keamanan Website Lembaga X Melalui Penetration Testing Menggunakan Framework ISSAF, Jurnal Ilmiah Merpati (Menara Penelitian Akademika Teknologi Informasi), Vol. 8, No. 2, Hal 113-124.
[5] T. Imam, M. Danni, I Gunawan, 2022, Analisis Serangan dan Keamanan pada SQL Injection: Sebuah Review Sistematik, JIIFKOM (Jurnal Ilmiah Informatika & Komputer), Vol. 1, No. 2, Hal 27-32.
[6] S. Kumar, B. J. Amrita, V. Vidyapeetham, B. J. Santhosh Kumar, and P. P. Anaswara, 2018, Vulnerability Detection and Prevention of SQL Injection, https://www.researchgate.net/publication/346624353, Diakses Tgl 21 Juni 2023.
[7] I. Salim, A. Muzakir, and H. Syaputra, 2020, Perangkat Lunak Koreksi Penggunaan Sumberkutipan dan Daftar Pustaka pada Jurnal Mahasiswa, Jurnal Pengembangan Sistem Informasi dan Informatika, Vol. 1, No. 2, Hal 100–109.
[8] Budi Raharjo, 2017, Belajar Otodidak Flask (Framework Python Untuk Pengembangan Aplikasi Web), Informatika, Bandung.
[9] Budi Raharjo, 2019, Kumpulan Solusi Pemrograman Python, Ed. Revisi, Informatika, Bandung.
[10] R. Senthan, E. Y. A. Charles, and S. R. Kodituwakku, 2021, Regular Expressions Based SQL Injection Detection, Vavuniya University International Research Conference, Hal 439-442.
Mahendra Chevro Susanto [Perlindungan Form Website pada Framework Flask Dengan Metode Regular Expression]
Title of manuscript is short and clear, implies research results (First Author) [11] Computer Hope, 2020, What is A Regex (Regular Expression)?,
https://www.computerhope.com/jargon/r/regex.htm, Diakses tgl 15 September 2022.
[12] Wikipedia, 2022, Regular Expression - Wikipedia,
https://en.wikipedia.org/wiki/Regular_expression, Diakses Tgl 15 September 2022.
[13] A. Latif, 2015, Implementasi Kriptografi Menggunakan Metode Advanced Encryption Standar(Aes) Untuk Pengamanan Data Teks, Mustek Anim Ha Vol. 2, Hal 164–172.
[14] Y. Dwi Wijaya and M. Wardah Astuti, 2021, Pengujian Blackbox Sistem Informasi Penilaian Kinerja Karyawan PT Inka (Persero) Berbasis Equivalence Partitions, Jurnal Digital Teknologi Informasi, Vol. 4, Hal 22-26.