Color Switcher

Check template with your color

Or custom color..

Blog Details

  • Home
  • mengatasi-composer-security-vulnerabilities-di-laravel-12-filament-v5-dengan-aman
Blog Image
admin 22 July, 2026 iconProblem Solving

Mengatasi Composer Security Vulnerabilities di Laravel 12 + Filament v5 dengan Aman

Mengatasi Composer Security Vulnerabilities di Laravel 12 + Filament v5 dengan Aman

Tujuan

Melakukan update dependency untuk menghilangkan seluruh Composer Security Advisories tanpa mengganggu aplikasi production.

Target:

  • ✅ No Security Vulnerabilities
  • ✅ Aplikasi tetap berjalan
  • ✅ Test berhasil
  • ✅ Aman untuk deployment

1. Cek Vulnerability

Lakukan audit terlebih dahulu.

composer audit

Contoh hasil awal:

Found 37 security vulnerability advisories affecting 16 packages

Jangan langsung menjalankan:

composer update

Karena akan meng-update seluruh dependency dan berpotensi menimbulkan breaking change.

2. Buat Branch Khusus

Selalu buat branch baru.

git checkout -b fix/security-dependencies

Tujuannya:

  • jika update gagal bisa dibatalkan
  • branch main tetap aman
  • mudah melakukan review melalui Pull Request

3. Lakukan Dry Run

Gunakan dry-run terlebih dahulu.

Misalnya:

composer update \
    filament/filament \
    filament/actions \
    filament/forms \
    filament/infolists \
    filament/notifications \
    filament/query-builder \
    filament/schemas \
    filament/support \
    filament/tables \
    filament/widgets \
    laravel/framework \
    guzzlehttp/guzzle \
    guzzlehttp/psr7 \
    --with-all-dependencies \
    --minimal-changes \
    --dry-run

Perhatikan:

  • package yang berubah
  • apakah Livewire ikut berubah
  • apakah Symfony berubah major version

Jika masih aman lanjutkan tanpa --dry-run.

4. Jalankan Update

composer update \
    filament/filament \
    filament/actions \
    filament/forms \
    filament/infolists \
    filament/notifications \
    filament/query-builder \
    filament/schemas \
    filament/support \
    filament/tables \
    filament/widgets \
    laravel/framework \
    guzzlehttp/guzzle \
    guzzlehttp/psr7 \
    --with-all-dependencies \
    --minimal-changes

5. Audit Kembali

composer audit

Jika masih ada vulnerability, update package yang tersisa.

Contohnya:

composer update \
    symfony/dom-crawler \
    symfony/html-sanitizer \
    symfony/http-foundation \
    symfony/http-kernel \
    symfony/mailer \
    symfony/mime \
    symfony/polyfill-intl-idn \
    symfony/routing \
    symfony/yaml \
    --with-all-dependencies \
    --minimal-changes

Target akhirnya:

No security vulnerability advisories found.

6. Jalankan Testing

Clear Cache

php artisan optimize:clear

Jalankan Test

php artisan test

7. Jika Test Menggunakan SQLite

Secara default Laravel Testing biasanya menggunakan SQLite.

Jika project menggunakan MySQL, buat database testing sendiri.

Misalnya:

centrova_furniture_testing

Buat file:

.env.testing

Isi:

APP_ENV=testing

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=centrova_furniture_testing
DB_USERNAME=root
DB_PASSWORD=root

Komentari konfigurasi SQLite di:

phpunit.xml

Dari:

<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>

Menjadi:

<!--
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>
-->

Kemudian migration database testing:

php artisan migrate --env=testing

8. Refresh Database Saat Test

Tambahkan pada:

tests/Feature/ExampleTest.php

use Illuminate\Foundation\Testing\RefreshDatabase; class ExampleTest extends TestCase { use RefreshDatabase; }

Kemudian jalankan:

php artisan test

Target:

PASS

9. Cek Perubahan Git

git status

Pastikan hanya file yang memang berubah.

Contoh:

composer.lock

public/js/filament

public/css/filament

tests

phpunit.xml

10. Commit

git add .

atau lebih aman:

git add composer.lock
git add public
git add phpunit.xml
git add tests

Commit:

git commit -m "fix: update dependencies and resolve security vulnerabilities"

Pastikan:

git status

Hasil:

nothing to commit, working tree clean

11. Push Branch

git push -u origin fix/security-dependencies

GitHub akan memberikan link Pull Request.

Contoh:

https://github.com/username/project/pull/new/fix/security-dependencies

12. Buat Pull Request

Base:

main

Compare:

fix/security-dependencies

Title:

fix: update dependencies and resolve security vulnerabilities

Description:

## Summary

- Update Laravel patch version
- Update Filament v5
- Update Symfony security patch
- Resolve Composer Security Advisories
- Update published Filament assets
- Configure MySQL testing

## Verification

- ✅ composer audit
- ✅ php artisan test
- ✅ Manual testing

Lalu:

Create Pull Request

Kemudian:

Merge Pull Request

13. Deployment ke Server (cPanel)

Masuk ke terminal server.

Pastikan branch:

git checkout main

Pull terbaru:

git pull origin main

Install dependency sesuai composer.lock:

composer install --no-dev --prefer-dist --optimize-autoloader

Jangan gunakan composer update di server, karena dapat menghasilkan versi package yang berbeda dari yang sudah diuji di lokal.

Clear cache:

php artisan optimize:clear

Jalankan migration:

php artisan migrate --force

--force hanya melewati konfirmasi pada environment production. Perintah ini tidak menghapus data. Jika tidak ada migration baru, Laravel hanya akan menampilkan Nothing to migrate.

Optimasi kembali:

php artisan optimize

Checklist Deployment

☑ composer audit
☑ php artisan test
☑ git status bersih
☑ commit
☑ push branch
☑ Pull Request
☑ Merge ke main
☑ git pull origin main di server
☑ composer install
☑ php artisan optimize:clear
☑ php artisan migrate --force
☑ php artisan optimize
☑ Smoke test aplikasi

Pelajaran Penting

  1. Jangan pernah menjalankan composer update langsung di production.
  2. Selalu gunakan branch khusus untuk update dependency.
  3. Selalu lakukan composer audit sebelum dan sesudah update.
  4. Gunakan --dry-run terlebih dahulu untuk melihat dampak update.
  5. Lakukan update secara bertahap (Laravel, Filament, Symfony, dll.), bukan sekaligus semua package.
  6. Gunakan composer install di server agar versi dependency sama persis dengan hasil pengujian lokal.
  7. Miliki database testing terpisah (misalnya *_testing) agar proses pengujian tidak menyentuh database development atau production.
  8. Pastikan deployment diakhiri dengan smoke test pada fitur-fitur utama aplikasi (login, dashboard, panel Filament, form, tabel, upload, editor, dan halaman publik).

Dengan alur ini, update dependency menjadi lebih aman, mudah ditelusuri, dan meminimalkan risiko gangguan pada aplikasi yang sedang berjalan.

Last Update: 22 July, 2026