====== LU02e - LB2 - Projektauftrag ====== ===== 1. Projektauftrag ===== **Teil 1** Programmieren Sie eine Applikation, die mit den nachfolgenden Techniken angreifbar ist (vulnerable). Der Angriffsvektor kann entweder über eine Front-End-Schnittstelle oder über ein Backend-Script/File erfolgen. **Teil 2** Programmieren Sie die gleiche Applikation als sichere Version (secured), in dem Sie die definierten Sicherheitsmassnahmen programmiertechnisch umsetzen. ===== 2. Metaziele ===== Die Arbeit ist, gmäss Unterrichts-Input, bezüglich der CIA-Triad auszurichten. Idealerweise weisen können Sie mit den Themenvorgaben gegen alle 3 Meta-Ziele (Verfügbarkeit, Vertraulichkeit, Integrität) angreifen. Selbstverständlich erstellen Sie die Sicherheitsmassnahmen so aus, dass diese Angriffe im 2. Teilauftrag nicht mehr möglich sind. ===== 3. Ablauf ===== * Es werden zufällig Teams zu je 2 Personen gebildet * Die Lehrersperson kommuniziert: * den Auftrag und den Umfang (Was ist zu liefern) * die Themen * die Zuteilung der Team zu den Themen * Die Arbeitsaufteilung muss klar ersichtlich sein: Sie arbeiten am gleichen Projekt, jedoch an unterschiedlichen Teilen: Angriff VS. Verteidigung * Die Leistungsüberprüfung geschieht durch ein Video-aufgezeichnetes Fachgespräch. * Jedes Mitglied kann Auskunft über alle Codeteile geben, d.h. Wissenstransfer liegt in der Verantwortung der Lernenden * Bewertet wird nach einem vorher definierten Bewertungsraster * Je 2 Teams erhalten den gleichen Auftrag, das Team mit der besten Leistung erhält einen Bonus von 0.25 Notenpunkten ===== 4. Themen ===== Die nachfolgenden Themen stehen zur Verfügung: - SQLi - BruteForce - DDoS ==== 5. Lieferumfang ===== - Zielsetzung: UseCases - Konzept: ERD oder Ablaufdiagramm - konzept: Architecktur (UML oder ähnliches) * 1. Schicht: Frontend oder Simulation * 2. Schicht: Server * 3. Schicht: Datenbank-Instanz, Wörderbücher, etc - Unsichere Version der Software - Sichere Version mit entsprechend umgesetzten Programmiermassnahmen ===== 6. Erlaubte Technologien ===== Die nachfolgenden Technologien stehen Ihnen zur Verfügung. * HTML-CSS * JavaScript oder Python * Node.js Laufzeitumgebung (Analog Python) * CodeEditor Visual Studio Code, Webstorm oder Pycharm * Postman Frontend-Simulation ---- [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] Volkan Demir