Aplikasi Flask sederhana untuk praktikum keamanan jaringan. Mahasiswa dapat mengamati alur login HTTP tanpa enkripsi, menyadap kredensial via Wireshark, dan menganalisis cookie sesi yang sengaja dibuat tidak aman. Proyek ini memakai MySQL sebagai sumber data pengguna (tabel pengguna).
- Python 3.10+
- MySQL Server (mis. XAMPP / MariaDB / MySQL Community)
- Pip packages:
flask,mysql-connector-python
- Clone & masuk ke folder proyek
git clone https://github.com/aelyn4k/http-login-lab.git cd "Login Sederhana HTTP"
- (Opsional) Buat virtualenv
python -m venv .venv .venv\\Scripts\\activate # PowerShell / CMD
- Install dependensi Python
pip install flask mysql-connector-python
-
Jalankan MySQL Server.
-
Impor dump
weblogin_db.sqluntuk membuat databaseweblogin_dbbeserta tabelpenggunadan data contoh:mysql -u <user> -p < weblogin_db.sql
-
Pastikan tabel
penggunaberisi minimal:Username Password admin123 admin12345 superadmin admin12345 student wireshark
Aplikasi membaca pengaturan koneksi dari environment variable berikut (nilai default di sisi kanan):
DB_HOST(defaultlocalhost)DB_PORT(default3306)DB_USER(defaultroot)DB_PASSWORD(default kosong)DB_NAME(defaultweblogin_db)DB_TABLE(defaultpengguna)DB_USERNAME_FIELD(defaultusername)DB_PASSWORD_FIELD(defaultpassword)
Contoh set di PowerShell (hanya untuk sesi berjalan):
$env:DB_HOST = "127.0.0.1"
$env:DB_USER = "root"
$env:DB_PASSWORD = "password_mysqlmu"
$env:DB_NAME = "weblogin_db"
$env:DB_TABLE = "pengguna"
$env:DB_USERNAME_FIELD = "username"
$env:DB_PASSWORD_FIELD = "password"python app.pySecara default server berjalan di http://localhost:5051/.
- Buka
/logindan masuk menggunakan salah satu kredensial pada tabel di atas. - Setelah sukses, Anda diarahkan ke dashboard dengan informasi modul praktikum dan cookie sesi.
- Untuk keperluan lab, pantau trafik HTTP menggunakan Wireshark:
- Gunakan filter
http.request || http.response. - Temukan payload POST yang memuat username/password.
- Observasi header
Set-Cookiedan perhatikan atribut keamanannya.
- Gunakan filter
- Akses
http://localhost:5051/successtanpa login akan men-redirect kembali ke halaman login.
- Session cookie (
session=user=...;insecure=true) sengaja tidak diberi atributSecure/HttpOnlyuntuk demonstrasi risiko. - Proyek ini adalah materi latihan; jangan gunakan password nyata atau menjalankannya di lingkungan produksi.
- Untuk menambah akun baru, cukup sisipkan baris pada tabel
pengguna.
Gunakan bebas untuk kebutuhan edukasi; sesuaikan sesuai kebutuhan lab Anda.