Schmock Mutter nicht ausreichend versorgt fast verhungert Mutter bei Geburt verstorben Schmock mit Flasche aufgezogen
Schmock lebt auf dem Argenhof 175 Tiere
- Liegt in der Nähe von Wangen
- Über 7,5 ha Fläche ca. 10 Fußballfelder
Verwaltungsmitarbeiter Führen Tierbestandsbuch Erweiterung des Online-Tierbestandsbuch im Projekt
Aufgaben Besonderheiten Inhalt 1:30 Überblick
Webapplikation Ruby on Rails Basiert auf Ruby MVC-Architektur
Kurze Vorstellung der wichtigsten Funktionen 4:00
Tiere in Tabellenform Filterung nach allen Lamas Filterung nach allen verstorbenen Tieren
Pflegebehandlungen in Tabelle Eintragung einer Impfung
Besonderheiten Besonderheiten 3:30 Überblick
3 3 Dinge, die beachtet werden müssen 1.: Namenskonventionen bei Rails
Convention over Configuration Konventionen werden eingehalten Konfiguration wird automatisch vorgenommen Konfiguration auch manuell möglich hoher Aufwand, Fehler schwer zu finden
Tier Behandlung erhält ist animals_cares animals cares m n Ein Tier kann mehrere Behandlungen erhalten Eine Behandlung kann bei mehreren Tieren vorgenommen werden Tabellennamen immer im Plural Tabellennamen immer auf Englisch Wegen m:n-Beziehung in relationaler Datenbank: Zwischentabelle animals_cares Beide Tabellen im Plural Unterstrich dazwischen Reihenfolge alphabetisch ist animals cares
2.: Anpassung der Datenbankabfragen 2 verschiedene Datenbanken 8:00
Test- und Entwicklungsumgebung: SQLite SQLite dafür sehr gut geeignet Nicht für Produktivumgebung geeignet
Produktivumgebung: PostgreSQL Funktionen außerhalb des SQL-Standards Ausgedruckte Methoden austeilen
strftime extract SQLite: strftime, um nach dem Jahr zu filtern PostgreSQL: extract
- 3.: wichtigster Punkt - 10:00
Sicherheit Nur Browser und Internetverbindung benötig, um in Tierbestandsbuch einzudringen
SQL-Injection
Normalerweise: Eingabe des Tiernamens Angreifer: Eingabe eines SQL-Befehls Anzeige aller Tiere Gefahr: Angreifer kann komplette Datenbank auslesen, Daten verändern, Daten löschen etc.
WHERE (name LIKE 'Schmock') SELECT * FROM "animals" Was passiert bei der SQL-Injection? SQL-Statement, bei dem alle Tiere mit dem Namen Schmock angezeigt werden WHERE (name LIKE 'Schmock')
WHERE (name LIKE '' or 1)--') SELECT * FROM "animals" SQL-Befehl anstatt Tiername Tier mit leerem Namen wird gesucht 1 immer wahr gesamtes Or-Statement wahr Bindestriche als Kommentar Ausgabe aller Tiere WHERE (name LIKE '' or 1)--')
where("name LIKE '#{animal}'") Wie können SQL-Injections verhindert werden? Unsicherer Code Variable direkt in SQL-Statement eingebunden Sicherer Code Variable als Parameter ActiveRecord überprüft Wert vor der Ausführung where("name LIKE ?", animal)
where("name LIKE '#{animal}'")
WHERE (name LIKE '' or 1)--') SELECT * FROM "animals" WHERE (name LIKE '' or 1)--') - Automatisches Hinzufügen eines Hochkommas nach einem Hochkomma im Übergabewert
WHERE (name LIKE ''' or 1)--') SELECT * FROM "animals" WHERE (name LIKE ''' or 1)--') Hochkomma wir escaped Ungewollte SQL-Anweisung wird nicht ausgeführt
Kein Tier mit gesuchtem Namen vorhanden Kein Tier wird angezeigt
Anpassung der Abfragen Namenskonventionen Anpassung der Abfragen - Zusammenfasssung Parametrisierung
Aufgaben Besonderheiten Erklärung der Aufgaben 13:00 Überblick
Support Wartung - Zusammenfassung Erweiterung
Support Argenhof soll bei Fragen oder Problemen unterstützt werden
Wartung Fehler sollen behoben werden Neue Tierarten eintragen
Erweiterung Hinzufügen weiterer Funktionen Eingabe von Tiergruppen ohne Namen für jedes Tier
- Durch Online-Tierbestandsbuch mehr Zeit für andere Dinge ;)