BNMO BOXD merupakan aplikasi web review film yang memiliki tiga role yaitu User, Admin, dan Curator. Untuk bagian monolitik, BNMO BOXD menggunakan PHP untuk server-side, vanila HTML, CSS, dan JS untuk client-side, serta MySQL sebagai RDBMS dari database. Bagian monolitik merupakan bagian utama dari aplikasi dimana role User yang merupakan pengguna biasa berinteraksi dengan BNMO BOXD. Untuk bagian Curator menggunakan ReactTS untuk tampilan depan, REST Service sebagai back-end, dan SOAP untuk menghubungkan dengan bagian monolitik. Aplikasi ini dibuat untuk memenuhi Tugas Besar 2 mata kuliah Pengembangan Aplikasi Berbasis Web IF3110 2023/2024.
Role Curator pada BNMO BOXD dapat membuat review terhadap suatu film. Review tersebut hanya dapat dibaca oleh User yang telah subscribe ke Curator yang bersangkutan. Untuk melakukan susbscribe, User perlu mengirim permintaan subscribe terlebih dahulu. Admin lalu dapat menyetuji atau menolak permintaan subscribe dari User. Untuk mendaftar menjadi Curator, pengguna perlu melakukan registrasi dan meminta verifikasi ke Admin. Hanya Curator yang telah diverifikasi oleh Admin yang dapat melakukan login dan mengakses fitur-fitur Curator. Untuk fitur yang disediakan pada bagian monolitik, dapat melihat repository PHP APP. Ada dua level yang akan digunakan untuk mengklasifikasikan hak akses dari fitur pada bagian curator, yaitu:
- All (Semua dapat mengakses)
- Curator (Hanya Curator yang dapat mengakses)
- Admin (Hanya admin yang dapat mengkases)
Berikut adalah fitur-fitur yang ada beserta klasifikasi hak aksesnya:
All:
- Melakukan Register
- Melakukan Login
Curator:
- Melihat jumlah subscriber dan reviewnya
- Membuat review
- Mengedit review
- Menghapus review
Admin:
- Melihat permintaan subscription
- Melihat permintaan verification
- Menerima/menolak permintaan subscription
- Menerima/menolak permintaan verification
- Docker
- Node 16 or later
- NPM
- PNPM
- Install requirements
-
Docker
-
Untuk windows and mac user
- Download docker desktop here
-
Untuk UNIX like user jalankan command di bawah
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Untuk memverifikasi apakah docker telah terinstall, maka coba jalankan
docker run hello-world
. -
-
Node
-
Untuk windows and mac user
- Download node desktop here
-
Untuk UNIX like user jalankan command di bawah
sudo apt install nodejs
Untuk memverifikasi apakah node telah terinstall, maka coba jalankan
node -v
ataunode --version
-
-
NPM
-
Untuk windows and mac user, NPM sudah terinstall satu paket dengan Node
-
Untuk UNIX like user jalankan command di bawah
sudo apt install npm
Untuk memverifikasi apakah NPM telah terinstall, maka coba jalankan
npm -v
ornpm --version
-
-
PNPM
- Jalankan perintah
npm install -g pnpm
pada terminal
Untuk memverifikasi apakah PNPM telah terinstall, maka coba jalankan
pnpm --version
- Jalankan perintah
- Clone repository
- Ubah directory ke root dari repo ini (sejajar dengan file README.md)
- Buat file
.env
- Isi file
.env
dengan (terdapat pada .env.example)VITE_REST_API_URL=http://localhost:3000 VITE_PHP_API_URL=http://localhost:8080
- Buka terminal lalu jalankan
pnpm install
ataupnpm i
- Jalankan
pnpm run build
- Jalankan
docker compose up -d
- Buka browser dan buka
localhost:5173
13521044 | 13521047 | 13521107 |
---|---|---|
Login Page | Verification Management Page | Review and Testing |
Register Page | Review and Testing | |
Curator Dashboard | ||
Admin Dashboard | ||
Create, Edit, Delete Review | ||
Subscription Management Page | ||
Edit Profile Page | ||
API Integration | ||
Docker |
This app is secure fro HTML / CSS Injection Attack
. HTML/CSS injection attacks, also known as Cross-Site Scripting (XSS) attacks, occur when an attacker is able to inject malicious HTML or CSS code into a web page that is then served to other users. XSS attacks can have serious consequences, ranging from stealing sensitive information to taking control of user accounts.
- The usage of
react
framework parses JS code in as string literal, so XSS attacks aren't reflected in the app. - Usage of
zod
to validate user input
The following screenshot shows that the html injection by the attacker fails because the text doesnt become bold: