Monolith

Description

Monolith merupakan sebuah aplikasi yang digunakan untuk transaksi jual beli. Singkatnya, Monolith adalah aplikasi e-commerce. Data-data produk diambil melalui Single Service


List of Contents

  1. Description
  2. Tech Stack
  3. Design Patterns
  4. How to Run
  5. API Endpoints
  6. Bonuses
  7. Made with Love by

Tech Stack

Tech

  • PHP v8.2.4
  • Laravel v10.15.0 => framework PHP
  • Docker-compose v2.19.1 => container

Database

  • MySQL v8.0.34
  • DBeaver => DBMS Tools

Design Patterns

  1. Chain of Responsibility

Digunakan untuk menghubungkan berbagai objek dalam sebuah rantai sehingga dapat dilakukan penanganan request secara terurut. Alur perjalanan request adalah Middleware -> Routes -> Controllers -> Models -> Views -> Databases

  1. MVC (Model-View-Controller)

Diimplementasikan oleh struktur MVC (Model-View-Controller) sehingga setiap directory memiliki fungsinya masing-masing dan mudah dilakukan maintenance

  1. Decorator

Diimplementasikan oleh directory middleware untuk menghindari penulisan kode berulang saat mengecek autentikasi, melakukan enkripsi cookie, maupun mengeset header di setiap page

  1. Facades

Digunakan pada setiap file yang memerlukan akses ke directory lain sehingga memudahkan penghafalan sintaks tanpa harus mengingat sintaks aslinya


How to Run

  1. Clone repository ini

  2. Masuk ke directory

cd /Monolith-Fullstack 
  1. Buat file .env dengan command berikut
  • Windows
copy .env.example .env
  • Linux
cp .env.example .env
  1. Jika menggunakan Docker Desktop, jalankan aplikasi tersebut terlebih dahulu

  2. Pada terminal/cmd, jalankan command makefile berikut.

make setup 

Bonuses

B01 - OWASP

  • Cryptographic Failure

Serangan ini dilakukan apabila penyusup mampu memperoleh data sensitif dari hasil MITM (Man-In-The-Middle Attack). Misalkan penyusup memperoleh data user dan password, namun password masih dalam bentuk enkripsi.

Testing Result

Terlihat bahwa penyusup tidak berhasil melakukan login. Hal ini karena Laravel melakukan enkripsi password menggunakan bcrypt yang belum ditemukan metode dekripsinya.

  • Injection

Metode injection yang digunakan adalah SQL injection, salah satu metode yang paling umum digunakan. Thanks to Laravel, Laravel menggunakan Eloquent ORM sehingga website tidak dapat diinjeksi.

Testing Result Testing Result

  • Server-Side Request Forgery

Thanks to Laravel, serangan ini telah di-handle oleh CSRF. Ketika melakukan login, server akan meminta token yang hanya dimiliki oleh user tertentu dan tidak di-send melalui jaringan (hanya ada di lokal) sehingga hampir tidak mungkin untuk melakukan serangan ini (token tidak dapat di-bruteforce)

Testing Result

B05 - Lighthouse

  1. Page Login

Login Page

Terlihat bahwa indikator performance sangat buruk. Hal ini karena website menggunakan template bundle css. Solusi yang dapat diberikan adalah menghapus beberapa kode yang tidak digunakan dari bundle tersebut, namun perlakuan tersebut membutuhkan waktu yang cukup lama (author tidak memiliki cukup waktu)

  1. Page Register

Register Page

Terlihat bahwa indikator performance sangat buruk. Hal ini karena website menggunakan template bundle css. Solusi yang dapat diberikan adalah menghapus beberapa kode yang tidak digunakan dari bundle tersebut, namun perlakuan tersebut membutuhkan waktu yang cukup lama (author tidak memiliki cukup waktu)

  1. Page Katalog Barang

Katalog Page

Memiliki skor rata-rata sebesar 94.5 (dibulatkan menjadi 95)

  1. Page Detail Barang

Detail Page

Memiliki skor rata-rata sebesar 94.5 (dibulatkan menjadi 95)

  1. Page Beli Barang

Beli Page

Memiliki skor rata-rata sebesar 94.5 (dibulatkan menjadi 95)

  1. Page Riwayat Pembelian

Riwayat Page

Memiliki skor rata-rata sebesar 94.5 (dibulatkan menjadi 95)


B06 - Responsive Layout

Luckily, tampilan website ini menggunakan Bootstrap langsung dari Laravel sehingga layout otomatis responsif. Hal ini dapat dilakukan dengan menggunakan command

php artisan ui:bootstrap

B11 - Fitur Tambahan

  1. Search Functionality

Mengimplementasikan fitur search pada page katalog barang dan riwayat barang


Made with Love by

Frendy Sanusi - 18221041

Sistem dan Teknologi Informasi

Institut Teknologi Bandung