Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit dem Web-Framework Django 29. Januar 2018 Yannick Linke 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 1
Übersicht Web-Frameworks 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 2
Übersicht Web-Frameworks Objekt-relationale Mapper 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 2
Übersicht Web-Frameworks Objekt-relationale Mapper Templates 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 2
Übersicht Web-Frameworks Objekt-relationale Mapper Templates Caching 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 2
Übersicht Web-Frameworks Objekt-relationale Mapper Templates Caching Angriffsmöglichkeiten 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 2
Übersicht Web-Frameworks Objekt-relationale Mapper Templates Caching Angriffsmöglichkeiten Django 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 2
Übersicht Web-Frameworks Objekt-relationale Mapper Templates Caching Angriffsmöglichkeiten Django Sicherheit 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 2
Übersicht Web-Frameworks Objekt-relationale Mapper Templates Caching Angriffsmöglichkeiten Django Sicherheit Realisierung 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 2
Übersicht Web-Frameworks Objekt-relationale Mapper Templates Caching Angriffsmöglichkeiten Django Sicherheit Realisierung Datenbank 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 2
Übersicht Web-Frameworks Objekt-relationale Mapper Templates Caching Angriffsmöglichkeiten Django Sicherheit Realisierung Datenbank Floyd-Warshall-Algorithmus 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 2
Übersicht Web-Frameworks Objekt-relationale Mapper Templates Caching Angriffsmöglichkeiten Django Sicherheit Realisierung Datenbank Floyd-Warshall-Algorithmus Benutzeroberfläche 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 2
Web-Frameworks Eine Sammlung von Paketen oder Bibliotheken, die grundlegende Funktionen enthalten, um Web-Entwicklung zu vereinfachen, wie: > Templates 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 3
Web-Frameworks Eine Sammlung von Paketen oder Bibliotheken, die grundlegende Funktionen enthalten, um Web-Entwicklung zu vereinfachen, wie: > Templates > Datenbankzugriff 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 3
Web-Frameworks Eine Sammlung von Paketen oder Bibliotheken, die grundlegende Funktionen enthalten, um Web-Entwicklung zu vereinfachen, wie: > Templates > Datenbankzugriff > Sessions und Authentifikation 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 3
Web-Frameworks Eine Sammlung von Paketen oder Bibliotheken, die grundlegende Funktionen enthalten, um Web-Entwicklung zu vereinfachen, wie: > Templates > Datenbankzugriff > Sessions und Authentifikation > Übersetzungen 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 3
Objekt-relationale Mapper > Abstraktionsebene, die das Ansteuern der Datenbank erleichtert. 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 4
Objekt-relationale Mapper > Abstraktionsebene, die das Ansteuern der Datenbank erleichtert. > Erlauben das Definieren von Tabellen durch Klassen in der genutzten Programmiersprache. 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 4
Objekt-relationale Mapper > Abstraktionsebene, die das Ansteuern der Datenbank erleichtert. > Erlauben das Definieren von Tabellen durch Klassen in der genutzten Programmiersprache. > Durch diese Klassen wird auch auf Einträge in der Datenbank zugegriffen. 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 4
Templates Definition einer Vorlage, die mit Daten gefüllt und dann ausgeben wird. 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 5
Templates Definition einer Vorlage, die mit Daten gefüllt und dann ausgeben wird. <select > {% for user in users %} <option >{{ user. username }} </ option > {% endfor %} </select> 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 5
Templates Definition einer Vorlage, die mit Daten gefüllt und dann ausgeben wird. <select > {% for user in users %} <option >{{ user. username }} </ option > {% endfor %} </select> <select > <option >UserA </ option > <option >UserB </ option > </select> 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 5
Caching > Viele Frameworks erlauben das temporäre Speichern von Informationen. 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 6
Caching > Viele Frameworks erlauben das temporäre Speichern von Informationen. > Führt zu niedrigeren Zugriffszeiten und verringert die Last pro Anfrage. 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 6
Caching > Viele Frameworks erlauben das temporäre Speichern von Informationen. > Führt zu niedrigeren Zugriffszeiten und verringert die Last pro Anfrage. > Meist für Informationen aus Datenbanken, generiertes HTML, oder Ergebnisse von aufwendigen Berechnungen verwendet. 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 6
Angriffsmöglichkeiten Einige bekannte Angriffe, die mit Web-Frameworks verhindert werden können, sind: 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 7
Angriffsmöglichkeiten Einige bekannte Angriffe, die mit Web-Frameworks verhindert werden können, sind: > XSS (Cross-Site Scripting): JavaScript in ungefilterten Eingabemasken. 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 7
Angriffsmöglichkeiten Einige bekannte Angriffe, die mit Web-Frameworks verhindert werden können, sind: > XSS (Cross-Site Scripting): JavaScript in ungefilterten Eingabemasken. > CSRF (Cross-Site Request Forgery): JavaScript auf einer anderen Webseite, das Anfragen im Namen des Nutzers sendet. 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 7
Angriffsmöglichkeiten Einige bekannte Angriffe, die mit Web-Frameworks verhindert werden können, sind: > XSS (Cross-Site Scripting): JavaScript in ungefilterten Eingabemasken. > CSRF (Cross-Site Request Forgery): JavaScript auf einer anderen Webseite, das Anfragen im Namen des Nutzers sendet. > SQL-Injection: SQL-Abfrage in ungefilterten Nutzereingaben. 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 7
Django > Entwickelt von zwei Angestellten der Niederländischen Firma World Online im August 2003. 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 8
Django > Entwickelt von zwei Angestellten der Niederländischen Firma World Online im August 2003. > Nach 2 Jahren quelloffen veröffentlicht und nach dem Jazz-Musiker Django Reinhardt benannt. 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 8
Django > Entwickelt von zwei Angestellten der Niederländischen Firma World Online im August 2003. > Nach 2 Jahren quelloffen veröffentlicht und nach dem Jazz-Musiker Django Reinhardt benannt. > Derzeit finanziell von Django Software Foundation unterstützt und von Entwicklern aller Welt weiterentwickelt. 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 8
Django Sicherheit Bekannte Angriffsmethoden wie CSRF, XSS und SQL-Injection sind mit einfachen Mitteln zu verhindern: 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 9
Django Sicherheit Bekannte Angriffsmethoden wie CSRF, XSS und SQL-Injection sind mit einfachen Mitteln zu verhindern: > CSRF-Token in Formularen 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 9
Django Sicherheit Bekannte Angriffsmethoden wie CSRF, XSS und SQL-Injection sind mit einfachen Mitteln zu verhindern: > CSRF-Token in Formularen > Variablen in Templates werden encodiert 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 9
Django Sicherheit Bekannte Angriffsmethoden wie CSRF, XSS und SQL-Injection sind mit einfachen Mitteln zu verhindern: > CSRF-Token in Formularen > Variablen in Templates werden encodiert > Djangos objekt-relationaler Mapper 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 9
Django Sicherheit ORM User. objects. filter( username ='A')\.values('username', 'id') Listing: Django ORM 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 10
Django Sicherheit ORM User. objects. filter( username ='A')\.values('username', 'id') Listing: Django ORM SELECT "auth_user"."username", "auth_user"."id" FROM " auth_user" WHERE " auth_user"." username" = 'A' Listing: SQL-Abfrage 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 10
Datenbank user id: int username: varchar *..1 user_id 1..* buyer_id bill id: int date: date buyer_id: int image: varchar *..1 bill_id split id: int item_id: int user_id: int item_id *..1 item id: int price: int bill_id: int Abbildung: Darstellung der relevanten Tabellen und Felder 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 11
Floyd-Warshall-Algorithmus > Wegfindungsalgorithmus für gewichtete, gerichtete Kanten. 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 12
Floyd-Warshall-Algorithmus > Wegfindungsalgorithmus für gewichtete, gerichtete Kanten. > Benannt nach Robert Floyd und Stephen Warshall. 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 12
Floyd-Warshall-Algorithmus > Wegfindungsalgorithmus für gewichtete, gerichtete Kanten. > Benannt nach Robert Floyd und Stephen Warshall. > Erlaubt zwei gerichtete Kanten zwischen zwei Knoten. 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 12
Floyd-Warshall-Algorithmus Eingabedaten {'UserA': { 'UserB': 12.49, 'UserC': 25}, 'UserB': { 'UserA': 20.35, 'UserC': 1.35}} UserC UserA 25 20.35 1.35 12.49 UserB Abbildung: Darstellung als Knotenmodell 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 13
Floyd-Warshall-Algorithmus Erste Iteration UserC UserA 25 20.35 1.35 12.49 UserB Abbildung: Model zu Beginn 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 14
Floyd-Warshall-Algorithmus Erste Iteration UserA UserA 25 20.35 12.49 25 7.86 UserC 1.35 UserB UserC 1.35 UserB Abbildung: Model zu Beginn Abbildung: Erste Iteration 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 14
Floyd-Warshall-Algorithmus Ergebnis UserA UserC 17.14 9.21 UserB Abbildung: Zweite Iteration und Ergebnis {'UserA': { 'UserC': 17.14}, 'UserB': { 'UserC': 9.21}} 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 15
Benutzeroberfläche Abbildung: Hauptseite nach dem Login 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 16
Benutzeroberfläche Abbildung: Hinzufügen einer Rechnung 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 17
Benutzeroberfläche Abbildung: Editieren einer Rechnung 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 18
Benutzeroberfläche Abbildung: Anzeigen einer Rechnung 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 19
Benutzeroberfläche Abbildung: Auflistung aller Rechnungen 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 20
Benutzeroberfläche Abbildung: Monatliche Abrechnung via Floyd-Warshall 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 21
Quellen Django Englisch. 2018. URL: https://docs.djangoproject.com/en/2.0/ Mozilla Developer Network. Server-side web frameworks Englisch. 2017. URL: https://developer.mozilla.org/en-us/docs/ Learn/Server-side/First_steps/Web_frameworks OWASP. Category: Attack Englisch. 2018. URL: https://www.owasp.org/index.php/category:attack Aleksejs Voroncovs. Der Floyd-Warshall Algorithmus Deutsch. 2015 URL: https://www-m9.ma.tum.de/graph-algorithms/sppfloyd-warshall/index_de.html 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 22
Ende Vielen Dank für Ihre Aufmerksamkeit. Fragen? 2018 Yannick Linke/FH Aachen Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit Django 23