Halo, Sobat Jagoan! Kamanan merupakan aspek penting dalam pengembangan aplikasi web, terutama ketika menangani data sensitif dan interaksi pengguna. Laravel sebagai framework PHP populer, menawarkan berbagai fitur keamanan, namun keamanan aplikasi Laravel sangat bergantung pada langkah-langkah yang diambil pengembang.
Artikel kali ini akan membahas langkah yang bisa kamu ambil untuk meningkatkan kemanan aplikasi Laravel kamu.
1) Melindungi File .env
File .env di Laravel adalah tempat menyimpan konfigurasi rahasia aplikasi. Mencakup informasi database, kunci enkripsi aplikasi (APP_KEY) dan lainnya. Pastikan kamu tidak membagikan fiel ini ke publik. Jangan memasukkan file .env production ke dalam repositori kode dan batasi akses hanya untuk pengguna yang berwenang.
2) Menonaktifkan Mode Debug di Server Produksi
Ketika kamu mengatur aplikasi Laravel dalam mode produksi (production), APP_DEBUG di file .env harus bernilai false. Kalau kamu mengaktifkan mode ini, pengguna dapat melihat kesalahan atau error pada aplikasi. Selain itu, ubah halaman error default Laravel agar tidak mengungkapkan bahwa aplikasi dibuat menggunakan Laravel.
3) Menggunakan Perlindungan CSRF
Cross-Site-Request-Forgery (CSRF) adalah serangan di mana penyerang bisa membuat pengguna yang terotentikasi melakukan tindakan yang tidak mereka inginkan. Laravel menyediakan token @csrf untuk melindungi aplikasi kamu. Token ini memastikan setiap permintaan POST, PUT, PATCH atau DELETE yang dikirim ke aplikasi berasal dari sumber yang sah. Namun, permintaan GET tidak memiliki token ini. Hindari menggunakan metode GET untuk tindakan yang memodifikasi data aplikasi, seperti penghapusan, karena bisa rentan terhadap serangan CSRF
Contoh menerapkan token CSRF yang valid pada method POST:
4) Menggunakan Eloquent ORM untuk Mencegah SQL Injection
Laravel menggunakan query builder dan Eloquent ORM untuk mendefinisikan interaksi database yang secara otomatis melindungi dari SQL Injection. Eloquent secara otomatis melindungi query database dengan menggunakan parameter binding, sehingga mencegah potensi celah keamanan yang dapat dimanfaatkan oleh serangan SQL injection.
Contoh penggunaan query builder:
$users = DB::table('users')->where('name', $name)->get();
Dengan binding parameter secara otomatis, Laravel memastikan bahwa nilai name tidak akan dieksekusi sebagai bagian dari query SQL.
5) Menerapkan Validasi Input dan Enkripsi
Untuk memastikan hanya data yang valid saja yang masuk ke aplikasi, kamu harus menerapkan validasi terhadap input pengguna. Laravel menyediakan berbagai metode validasi yang mudah digunakan.
$request->validate([
'title' => 'required|string|max:255',
'content' => 'required|string',
]);
Kamu bisa menggunakan validasi ini di setiap form request pengguna.
Selain validasi, enkripsi juga merupakan bagian penting dalam menjaga keamanan data pengguna, terutama untuk data sensitif seperti token, kode akses, atau informasi pribadi. Laravel menyediakan fitur enkripsi bawaan yang menggunakan algoritma AES-256 dan AES-128 secara default.
Contoh enkripsi:
use Illuminate\Support\Facades\Crypt;
$encrypted = Crypt::encryptString('data_rahasiaku');
Contoh deskripsi:
$decrypted = Crypt::decryptString($encrypted);
Dengan menggunakan Crypt, kamu bisa menyimpan data terenkripsi ke database dan hanya bisa dibaca kembali oleh sistem aplikasi Laravel kamu.
6) Menggunakan Blade untuk Menghindari Serangan XSS
Cross-Site Scripting (XSS) adalah serangan di mana penyerang menyisipkan skrip berbahaya ke dalam halaman web dan pengguna lain bisa melihat ini. Blade secara otomatis akan menghindari injeksi skrip berbahaya dan meng-escape semua data yang dimasukkan pengguna secara otomatis.
Contoh escaping dalam blade template:
{{ $userInput }}
Menggunakan {!! $var !!} harus hati-hati, karena browser akan langsung mengeksekusi variabel tersebut, yang berisiko untuk serangan XSS. Selalu gunakan {{ $var }} untuk menampilkan data dari pengguna agar aman dari injeksi kode berbahaya.
7) Otentikasi dan Otorisasi
Otentikasi memastikan pengguna yang masuk ke aplikasi kamu adalah mereka yang sah. Di Laravel, kamu bisa menggunakan perintah berikut untuk menghasilkan otentikasi dasar.
php artisan make:auth
Namun, mulai Laravel 7 ke atas, perintah ini sudah tidak tersedia secara default. Sebagai gantinya, Laravel menyarankan menggunakan Laravel Breeze, Laravel Jetstream, atau Laravel Fortify sebagai starter kit otentikasi.
Sedangkan otorisasi, menentukan apa yang bisa dilakukan oleh pengguna yang sudah login. Laravel menggunakan Gates dan Policies untuk menangani otorisasi. Gates adalah penutupan yang menentukan apakah pengguna yang terotentikasi dapat melakukan tindakan tertentu, sementara Policies adalah kelas yang mengatur logika otorisasi untuk model tertentu.
8) Middleware
Middleware di Laravel adalah lapisan perantara yang memproses request sebelum masuk ke controller, dan response sebelum dikirim ke browser. Contoh penggunaannya untuk menangani otentikasi (auth), validasi IP, menambahkan header, dan logging.
Laravel sudah menyediakan middleware bawaan, seperti auth (memastikan pengguna sudah login), guest (mengizinkan pengguna yang belum login), verified (memastikan email pengguna sudah diverifikasi).
Contoh di route:
Route::get('/dashboard', function () {
return view('dashboard');
})->middleware('auth');
Kamu juga bisa membuat middleware sendiri dengan perintah:
php artisan make:middleware CekAdmin
Setelah itu Laravel akan membuat file baru di app/Http/Middleware/CekAdmin.php. Kamu edit file CekAdmin.php, dan tambahkan logika sesuai kebutuhan.
9) Menggunakan Rate Limiting
Rate Limiting digunakan untuk mencegah serangan seperti spam atau Distributed Denial-of-Service (DDoS) yang biasanya terjadi di halaman form login. Teknik ini membatasi jumlah permintaan yang bisa dikirim oleh pengguna tertentu dalam jangka waktu tertentu untuk menghindari pembebanan berlebih pada server.
Laravel menyediakan middleware rate limiting yang mudah digunakan:
// App\Http\Kernel.php
protected $middlewareGroups = [
'api' =>
[ 'throttle:60,1', 'bindings'],
];
Ini membatasi hingga 60 permintaan per menit per IP.
Demikian beberapa tips untuk mengamankan aplikasi Laravel kamu. Semoga bermanfaat, Sob!
Simak terus tips-tips seputar domain dan hosting dari Jagoan Hosting di laman Pusat Tutorial Hosting & Domain. Kalau ada artikel yang belum tersedia, silahkan menyampaikan kepada Tim Support via Live Chat atau Open Ticket, Sob!
Pengantar Halo sobat Jagoan! di tutorial kali ini kita bakalan membahas permasalahan Error Undefined Index/Variable. Pasti sekarang kamu lagi main-main Read more
Hai, Sob kamu pasti tentu tidak ingin jika website kamu dibobol oleh hacker, terutama jika kamu seorang programmer dan webmaster. Read more
Kamu ngerasa insecure karena belum install antivirus? Install antivirus emang penting, Sob untuk menjaga performa server kamu. Nah, kamu bisa Read more
Lupa password root MySQL kamu? Gawat!, tapi kamu gak perlu panik, kita akan bahas bareng tutorialnya berikut ini. Eh, tapi Read more