/Secure_Software_Demo

Demo for a secure software design and implementation. Goal: Don't give hackers a chance.

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

Build Status

Software-Sicherheit

Als Software die es sicher zu programmieren gilt, soll eine simple Onlinebanking Software namens "BugCoin" umgesetzt werden.

Funktionen

Benutzer

  • Nutzerrollen: Benutzer, Premiumbenutzer, Administrator ✔
  • Kontostand einsehen ✔
  • Umsätze einsehen ✔
  • Überweisungen tätigen ✔
  • Registrierung durch Nutzer selbst ✔
  • Geschenkkarte zum Konto aufladen ✔
  • Account deaktivieren

Admin

  • Account aktivieren/deaktivieren ✔
  • Account upgrade/downgrade für Premiumbenutzer ✔
  • Alle Accounts anzeigen ✔
  • Geschenkkarten Codes erzeugen ✔

Sicherheitsfeatures

  • HTTPS, kein HTTP ✔
  • Benutzername + Password zur Authentifizierung ✔
  • Two Factor Authentication ✔
  • Captcha
  • Signieren von Überweisungen (TAN, Privatekey, ...)
  • Logout nach Inaktivität ✔
  • Freischaltung neuer Nutzer durch Admin, nach PostIdent Verfahren ✔
  • Logging von Benutzer/Admin aktivitäten bezüglich SQL-Statements (heroku logging) ✔
  • Sperren nach mehrmaliger fehlerhafter Passwort Eingabe
  • Emailverifizierung

Eingesetzte Technologien

  • Java -> SpringBoot (Spring)
  • Maven
  • H2 database (development), PostgreSQL (deployment)
  • Design patterns: MVC + Table Data Gateway

Mockup

Eine Mockup Implementierung in HTML und CSS der Weboberfläche befindet sich im Ornder html/.

Mockup of Webapplication

Continuous integration

https://travis-ci.com/shreaker/Secure_Software_Demo Build Status

Deployment

Unter https://bugcoin.herokuapp.com/ steht eine aktuelle Version der Webapplikation zur verfügung. Achtung: Bis dato wird die Applikation im development mode betrieben, das bedeutet die Datenbank wird spätestens nach 24h zurückgesetzt. Push auf heroku branch notwendig um zu depolyen: Einmalig Heroku Command Line installieren und Branch hinzufügen heroku git:remote -a bugcoin. Push: make im Project-Root-Verzeichnis ausführen.