/online-banking-app

This is an intentionally unsecure web bank app for the SWE 266P course at UCI.

Primary LanguagePython

Online Banking System

This is an Online Banking System created using Django Web Framework. And we intentionally inject 4 exploitable vulnerabilities into the code

Web Architecture

  • Frontend: HTML
  • Backend: Django
  • Database: SQLite & Redis

Features

  • Create a Bank Account.
  • Deposit & Withdraw Money
  • Initial Balance
  • Ability to add Minimum and Maximum Transaction amount restriction
  • See the balance after every transaction in the Transaction Report
  • Modern UI with Tailwind CSS

Prerequisites

Be sure you have the following installed on your development machine:

  • Python >= 3.7
  • Redis Server
  • Git
  • pip
  • Virtualenv (virtualenvwrapper is recommended)

Requirements

  • celery==4.4.7
  • Django==3.2
  • django-celery-beat==2.0.0
  • python-dateutil==2.8.1
  • redis==3.5.3

Project Installation

Run Redis server

redis-server

To setup a local development environment:

Create a virtual environment in which to install Python pip packages. With virtualenv,

virtualenv venv            # create a virtualenv
source venv/bin/activate   # activate the Python virtualenv 

or with virtualenvwrapper,

mkvirtualenv -p python3 {{project_name}}   # create and activate environment
workon {{project_name}}   # reactivate existing environment

Clone GitHub Project,

https://github.com/Emmeline1101/online-banking-app.git

cd online-banking-app

Install development dependencies,

pip install -r requirements.txt

Migrate Database,

python manage.py migrate

Run the web application locally,

python manage.py runserver # 127.0.0.1:8000

Create Superuser,

python manage.py createsuperuser

Run Celery (Different Terminal Window with Virtual Environment Activated)

celery -A banking_system worker -l info

celery -A banking_system beat -l info

How to relogin the system after the first trial (already install dependencies)

# active virtualenv
source /path/to/venv/bin/activate

# run server
python manage.py runserver

How to exit

# exit server
ctrl + C

# close Redis
redis-cli shutdown

# exit virtualenv
deactivate

How to manage data

go to http://127.0.0.1:8000/admin if password is forgotten, try:

python manage.py changepassword <username>

Images:

Deposit-Page

Transaction-Report-Page

Withdraw-Page