Selasa, 07 April 2020

Tips Keamanan CodeIgniter

Keamanan suatu aplikasi web tidak dapat dikompromikan. Menurut Symantec, salah satu perusahaan keamanan terkemuka di dunia, ada 4 kerentanan (XXS, SQL, Enumeration, Remote Execution) untuk aplikasi web.

Evaluasi di bawah ini menunjukkan hasil pengujian yang dilakukan pada contoh aplikasi web berbasis CodeIgniter untuk menyimpulkan tingkat keamanan sistem. Jika Anda adalah pengembang aplikasi web yang mengembangkan aplikasi menggunakan PHP, CodeIgniter memiliki banyak hal yang ditawarkan dalam hal keamanan.

Remote Code Execution

Jenis serangan ini memungkinkan peretas untuk mengeksekusi kode yang tidak diinginkan dari lokasi yang jauh menggunakan shell scripting atau tindakan lain. Metode pengamanan dari serangan Remote Code Execution umumnya menggunakan dua hal.

Yang pertama, file htaccess harus diatur untuk memungkinkan akses ke direktori tertentu saja, yang menimbulkan ancaman minimum jika diretas, contohnya direktori img/.

RewriteCond $1 !^(index\.php|img|robots\.txt)


Kedua, setiap file .php di CodeIgniter dilindungi dengan baris kode di atas.

<? php if ( ! defined('BASEPATH')) exit('No direct script access allowed');


Hal ini untuk memastikan bahwa file PHP tidak dapat diakses secara langsung dengan memanipulasi atau menjalankan skrip, yang akan membahayakan sistem.

SQL Injection

Jenis serangan ini sangat umum di web. Injeksi SQL terjadi ketika penyerang mengeksploitasi front-end dan memposting data untuk mengambil secure data dari database. Menurut panduan CodeIgniter, aplikasi web yang dibangun menggunakan framework ini akan secara otomatis aman dari injeksi SQL karena data POST diambil dalam Controller menggunakan

$this->input->post ('');


yang secara otomatis difilter oleh CodeIgniter.

Kutipan Panduan Pengguna CodeIgniter:

"Beyond simplicity, a major benefit to using the Active Record features is that it allows you to create database independent applications, since the query syntax is generated by each database adapter. It also allows for safer queries, since the values are escaped automatically by the system."

"Di luar kesederhanaan, manfaat utama menggunakan fitur Active Record adalah memungkinkan Anda membuat aplikasi basis data independen, karena sintaks kueri dihasilkan oleh setiap adapter basis data. Hal tersebut juga memungkinkan untuk permintaan yang lebih aman, karena setiap value akan diloloskan secara otomatis oleh sistem."

XSS Attacks

Serangan skrip XSS atau Cross Site scripting attack tidak dapat disangkal adalah penyebab paling umum dari kerentanan keamanan aplikasi web. Serangan XSS bekerja oleh seorang peretas yang menyusun URL jahat ke peramban untuk membahayakan keamanan aplikasi. CodeIgniter memiliki filter XSS bawaan yang diinisialisasi secara otomatis.

Username Enumeration

Username enumeration dapat dicegah dengan melakukan call back ke fungsi username_unique (lihat gambar di bawah) di controller CodeIgniter yang memeriksa nama pengguna yang ada, dan jika num_rows == 1, maka sistem tidak akan mengizinkan siapa pun untuk membuat akun dengan nama pengguna yang sama lagi.

Juga, pesan kesalahan yang konsisten harus ditampilkan, yang hanya mengungkapkan bahwa nama pengguna tertentu tidak tersedia dan tidak menunjukkan daftar nama pengguna yang valid, yang dapat digunakan oleh penyerang untuk membuat tebakan untuk melakukan serangan.

username_enumeration_codeigniter


Fitur keamanan lainnya di CodeIgniter

Terlepas dari yang Saya sebutkan di atas, ada beberapa fitur keamanan minor yang dapat diterapkan oleh pengembang aplikasi web. Misalnya, pastikan aplikasi web Anda tidak mengizinkan dua kelompok pengguna yang berbeda untuk mengakses akun satu sama lain pada sesi yang sama.

Ini dimungkinkan dengan meminta data sesi dikodekan dengan id pengguna dan tipe pengguna sehingga dapat digunakan untuk menentukan apakah akun tersebut milik pengguna yang data pengguna-nya ada di sesi aktif.

Untuk menyimpan kata sandi, algoritma MD5 harus digunakan untuk mengenkripsi kata sandi. Juga, jika Anda menggunakan unggahan file, pastikan nama file dikodekan dengan string 32-bit acak sehingga informasi pribadi atau sensitif bersifat anonim.

Selain itu, library form validation CodeIgniter terbukti sangat berguna. Validasi formulir memastikan bahwa informasi yang tidak valid tidak dimasukkan ke dalam database. Untuk memberikan lapisan keamanan ganda, struktur SQL bisa dibuat sedemikian rupa sehingga setiap bidang sesuai dengan data formulir yang masuk dengan a) tipe dan b) panjang.

1 komentar:


EmoticonEmoticon