digilib@itb.ac.id +62 812 2508 8800

Aspek yang penting dalam pembangunan aplikasi web PHP adalah aspek keamanan. Data breach merupakan salah satu akibat dari adanya celah keamanan pada aplikasi web. Metode untuk mendeteksi celah keamanan adalah dengan melakukan analisis statik. Analisis statik merupakan metode analisis aplikasi yang dilakukan tanpa melakukan eksekusi. Keunggulan analisis statik adalah metode ini melakukan pemeriksaan terhadap kode sumber sehingga akar permasalahan kemanan dapat ditemukan, bukan hanya gejala permasalahan keamanan. Namun, untuk melakukan analisis statik diperlukan pengetahuan expert dan memerlukan waktu yang relatif lama. Deteksi celah keamanan juga dapat dilakukan dengan menggunakan analisis leksikal dan pembelajaran mesin. Analisis leksikal dilakukan dengan cara merubah source code ke dalam bentuk informasi yang mudah untuk diolah seperti token yang selanjutnya diterapkan pembelajaran mesin untuk melakukan klasifikasi. Pemilihan fitur dan algoritma klasifikasi mempengaruhi hasil deteksi celah keamanan. Proses deteksi dilakukan secara cross project (dilakukan antar project). Data berasal dari website cve details dengan rincian 264 sqli, 80 cross site scripting, 117 directory trasversal dan 136.090 not vulnerable. Distribusi dari data yang telah dikumpulkan tidak berimbang (imbalanced data), maka diperlukan teknik untuk mengatasinya yaitu dengan melakukan teknik oversampling SMOTE dan undersampling Cluster Centroid. Fitur yang digunakan adalah token AST dan token PHP serta melakukan pruning pada AST dan modifikasi pada token PHP. Algoritma pembelajaran mesin menggunakan Gaussian Naïve Bayes (GNB), Support Vector Machine (SVM) dan Decision Tree untuk klasifikasi dan KMeans untuk clustering. Pada algoritma KMeans dilakukan pembobotan dengan cara memberikan bobot terhadap fitur yang sering muncul pada kelas vulnerable. Berdasarkan hasil pengujian, GNB dengan fitur modifikasi token memiliki nilai recall tertinggi baik untuk klasifikasi dua kelas maupun empat kelas vulnerability namun memiliki nilai precision yang sangat rendah.