Leseprobe
Inhaltsverzeichnis
Abbildungsverzeichnis
Tabellenverzeichnis
Abkurzungsverzeichnis
1 Einleitung 1
1.1 Problemstellung und Ziel dieser Arbeit
1.2 Aufbau der Arbeit
2 Grundlagen
2.1 Voruberlegungen
2.2 Verwendete Hilfswerkzeuge
2.3 MySQL Datenbank
2.4 Programmiersprache PHP
2.5 Datenbank Schnittstelle
2.6 CSS Framework
2.7 Salt and Pepper Verfahren
3 Datenbank
3.1 UML Modell
3.2 Relationen Modell
3.3 Storage Engines und Transaktionen
3.4 Unterschied MyISAM und InnoDB
3.5 SQLDDL
4 Implementierung
4.1 Design Pattern
4.1.1 Konfiguration
4.1.2 Datenbankanbindung
4.1.3 MVC
4.2 Controller
4.3 View
4.4 Modell
4.4.1 SQL-Injection
4.4.2 Methoden
5 Zusammenfassung
5.1 Kritische Wurdigung
5.2 Ausblick
Literaturverzeichnis
Abbildungsverzeichnis
1 Unified Modeling Language (UML) Modell
2 SQL DDL Codebeispiel der Tabelle Survey
3 SQL DDL Codebeispiel der Tabelle SurveyItems
4 SQL DDL Codebeispiel der Tabelle SurveyAnswers
5 SQL DDL Codebeispiel der Tabelle User
6 SQL DDL Codebeispiel fur Eintrag in die User Tabelle
7 Konfigurationsdatei config.ini
8 Model View Controller (MVC) Ablauf
9 Controller Default GET Methode
10 User Controller Benutzerhinzufugen POST Methode
11 Template Engine
12 Screenshot der Umfragenubersicht
13 SQL Injection - Fehlerhafter PHP Code
14 getSurveyName Funktion
15 getSurveyResult Methode
16 saveNewAnswers Methode
17 addSurvey Methode
Tabellenverzeichnis
1 Survey
2 SurveyItems
3 SurveyAnswer
4 SurveyAnswer
Abkurzungsverzeichnis
Abbildung in dieser Leseprobe nicht enthalten
1 Einleitung
Das Assignment fur das Studienmodul DBA02 - Einfuhrung in die Datenbank Pro- grammierung mit MySQL und PHP - wurde von Daniel Falkner und Eugen Grinschuk gemeinsam erstellt. Deshalb wird eine einheitliche Gruppenbenotung gewunscht.
1.1 Problemstellung und Ziel dieser Arbeit
Die Problemstellung dieser Arbeit ist, dass ein webbasiertes Umfragesystem mit un- terschiedlichen Umfragen und Antwortmoglichkeiten entwickelt werden soil. Dem Be- nutzer soll die Moglichkeit gegeben werden, eine oder mehrere Antwortmoglichkeiten auswahlen sowie die Umfrageergebnisse einsehen zu konnen. Das Ziel dieser Arbeit ist eine Implementierung der Anwendung aufBasis von Hypertext Preprocessor (PHP) in Verbindung mit einer MySQL Datenbank. DerZugriffaufdie Anwendung soll uber einen Webbrowser stattfinden. Daruber hinaus soll es dem Administrator ermoglicht werden sich mittels Benutzername und Passwort zu authentifizieren. In diesem ge- schutzten Bereich konnen neue Umfragen mit unterschiedlichen Antwortmoglichkei- ten hinzugefugt werden.
1.2 Aufbau der Arbeit
Im Grundlagenteil wird auf wichtige Voruberlegungen eingegangen, die vor der Erstel- lung des Datenbankmodells und der Anwendung gemacht werden mussen. AuBerdem wird ein uberblick uber die Skriptsprache PHP und dem Datenbanksystem MySQL geschaffen sowie auf verwendete Frameworks. Im Hauptteil werden Aufbau und Im- plementierung derDatenbanksowie der Anwendung behandelt. Der Schluss beinhaltet eine Zusammenfassung, eine kritische Wurdigung und einen Ausblick auf weitere Op- timierungen.
2 Grundlagen
2.1 Voruberlegungen
Bei den Voruberlegungen wurde die Entscheidung getroffen nur freie und somit ko- stenlose Software und Hilfswerkzeuge zu verwenden. Zur einfachen Verwaltung des Quellcodes wurde eine Versionsverwaltungssoftware eingesetzt. Git 1 ist dafur hervor- ragend geeignet und wird erfolgreich in anderen groBen Projekten eingesetzt.
2.2 Verwendete Hilfswerkzeuge
Furdie Erstellung der Datenbank wurden unterschiedliche Hilfswerkzeuge verwendet. Die Konzeption und somit die Modellierung der Datenbank wurde mit dem Hilfswerk- zeug Dia 2 erstellt. Damit war eine einfache und ubersichtliche Modellierung in UML 3 moglich. Um anschlieBend die Datenbank mit der datenbankorientierten Beschrei- bungssprache SQL 4 erstellen zu konnen, wurde phpMyAdmin 5 verwendet.
2.3 MySQL Datenbank
MySQL ist die beliebteste und am weitesten verbreitete Open-Source-Datenbank der Welt. 6 MySQL kennt die standardisierten Structured Query Language (SQL) Befeh- le, die von anderen Datenbanken, wie z. B. ORACLE 7 ebenfalls korrekt interpretiert werden. Da MySQL Open-Source ist, bildet sie die Basis fur viele dynamische Web- seiten, meist in Verbindung mit einem Content Management System (CMS) 8. Darin werden die Inhalte der Webseite, die Verlinkungen der Inhalte und Elemente der Web- seite sowie Informationen und gewisse Einstellungen des CMS gespeichert. Datenban- kabfragen der Webseite erfolgen mittels PHP. Damit lassen sich sehr dynamische und komplexe Internetanwendungen erstellen und verwalten.
Erstellung einer PHP-Anwendung fur Internet-Umfragen Selbststandige, aufDauer undflexiblen und sicheren Gebrauch ausgelegte Daten- organisation, die sowohl eine Datenbasis als auch eine zugehorige Datenverwaltung - Datenbankmanagementsystem (DBMS) - umfasst. Eine Datenbank dient dazu, eine grofie Menge von Daten strukturiert zu speichern und zu verwalten. 9
2.4 Programmiersprache PHP
PHP 10 ist eine Scriptsprache und vor allem im Webbereich sehr verbreitet. Mit Version 5 bietet PHP eine bessere Unterstutzung zur objektorientierten Programmierung 11. Durch die Objektorientierte Programmierung (OOP) kann ein Projekt sehr ubersicht- lich gegliedert und programmiert werden. Dies erleichtert gerade bei mittleren bis gro- Beren Projekten die Zusammenarbeit und die Wartung der Anwendung. Objekte wer- den von Klassen erzeugt in welcher der Quellcode und somit der eigentliche Ablauf definiert wird. Klassen konnen durch die Vererbung auch wieder verwendet werden. Ein weiterer Vorteil ist, dass auf bereits vorhandene Entwurfsmuster, die sogenannten Design Patterns 12, zuruckgegriffen werden kann. Durch Namespaces konnen Klassen und Funktionen in Bereiche eingeteilt werden. Mit Kombination der PHP Klassen Autoloader Funktion werden die jeweiligen Klassen Quellcodedateien automatisch bei Bedarf eingebunden.
2.5 Datenbank Schnittstelle
PHP bietet dem Entwickler mehrere Moglichkeiten eine MySQL Datenbank anzubin- den 13. Der mittlerweile veraltete native Treiber MySQL 14 sollte nicht mehr verwen- det werden. Er wird nicht mehr weiterentwickelt und bietet auch keine Unterstutzung zur OOP. Es wird die Verwendung der MySQLI 15 oder PHP Data Objects (PDO) Erweiterung als Datenbank Application Programming Interface (API) empfohlen. In dieser Anwendung wurde die PDO Erweiterung von PHP zum Zugriff auf MySQL ERSTELLUNG EINER PHP-ANWENDUNG FuR INTERNET-UMFRAGEN
Datenbanken verwendet. PDO unterstutzt Prepared Statements und kann gegenuber der MySQLI Schnittstelle mit mehreren Datenbanktypen umgehen. Dies bringt gerade beim Umstieg auf eine andere Datenbank einen erheblichen Vorteil zur Moglichkeit der weiteren Verwendung des Datenmodells.
2.6 CSS Framework
Die Darstellung und Formatierung der Hyper Text Markup Language (HTML) Sei- ten wird uber Cascading Style Sheet (CSS) definiert. Durch CSS wird der Inhalt der HTML-Seite von Design getrennt. Dies bewirkt einen ubersichtlicheren und kleineren HTML Code. Fur das Umfragesystem wurde ein freies CSS Framework mit dem Na- men Twitter Bootstrap 16 gewahlt. Dieses CSS Framework bewirkt neben Responsive Webdesign 17 auch ein einheitliches Design auf unterschiedlichen Webbrowsern.
2.7 Salt and Pepper Verfahren
Das Salt and Pepper Verfahren 18 ist ein kryptografisches Hashverfahren 19, welches beim Speichern von Passwortern verwendet wird. Dabei wird mit Salt eine zufallig ge- wahlte Zeichenfolge um die Informationen der Eingabe an das in Klartext hinterlegte Passwort erweitert. Der so entstandene Hashwert wird in der Datenbank abgespei- chert. Dieser Hashwert wird fur die uberprufung des Passwortes verwendet. Dabei wird der Salt nicht jedes Mal neu erzeugt, da das Passwort ansonsten abgelehnt wer- den wurde, weil der Hashwert nicht mit dem gespeicherten Hashwert ubereinstimmt. Mit Pepper werden weitere geheime Zeichenfolgen dem Passwort hinzugefugt. Diese, fur alle Passworter gleichen Zeichenfolgen werden noch vor der Berechnung des Has- hwertes dem Passwort hinzugefugt. Dabei wird der Pepper an einem anderen Ort als das Passwort selbst gespeichert. Dies dient zur erweiterten Sicherheit. Denn sollte es einem Angreifer z. B. durch SQL-Injection gelingen, sich Zugriff zur Datenbank zu verschaffen, dann sieht er zwar den Salt, nicht aber den Pepper. Demzufolge ist eine ERSTELLUNG EINER PHP-ANWENDUNG FuR INTERNET-UMFRAGEN
Entschlusselung des Passwortes nicht moglich, da beide Teile benotigt werden. Zur Steigerung der Sicherheit sollte ein moglichst starker Pepper definiert werden. Ziel des Salt and Pepper Verfahrens ist es, die in der Datenbank gespeicherten Passworter si- cherer und Worterbuchangriffe durch Brute-Force-Verfahren, zu erschweren oder gar wertlos zu machen.
3 Datenbank
Datenbanken sind in der heutigen Zeit kaum noch wegzudenken. Sie werden in ver- schiedensten Bereichen eingesetzt, in denen Daten gespeichert werden mussen, wie zum Beispiel Webseiten, Webshops, Personaldatenbank, etc. Somitistes kein Problem, komplette Web-Shops in Datenbanken zu speichern. Auch Benutzerinformationen wie Benutzername, Passwort und letzter Login konnen hier abgelegt werden.
3.1 UML Modell
Bei der Modellierung der relationalen Datenbank wurde auf eine flache Hierarchie geachtet, um unnotige Tabellen, Rechenzeit und Speicherplatz durch redundante Da- tenhaltung zu vermeiden. Der minimale Aufbau fur ein Umfragesystem mit Benutzern ist in Abbildung 1 ersichtlich. Die Benutzer werden mit ihren Attributen wie ID, Name, Passwort und LastLogIn in einer separaten Tabelle abgespeichert, wobei das Attribut ID den Primarschlussel 20 der Tabelle User kennzeichnet. Abhangigkeiten der Tabelle User zu anderen Tabellen in der Datenbank sind nicht vorhanden.
Abbildung in dieser Leseprobe nicht enthalten
Die Umfragen bestehen aus unterschiedlichen Fragen und verschiedenen Antwort- moglichkeiten. In der Tabelle Survey wird die Umfrage mit ihren Attributen ID und Name abgespeichert, wobei ID den Primarschlussel der Tabelle Survey bildet. In der Tabelle SurveyItems sind die Attribute ID sowie Name enthalten. Das Attribut ID kennzeichnet hierbei den Primarschlussel der Tabelle SurveyItems. Alle vorhandenen Antwortmoglichkeiten werden in der Tabelle SurveyItems gespeichert. Die Assozia- tion zwischen der Tabelle Survey und SurveyItems ist 1 : *. Das bedeutet, dass eine Umfrage eine oder mehrere Antwortmoglichkeiten enthalten kann, eine Antwortmog- lichkeit allerdings nur einer Umfrage zugeteilt wird. Wurde eine Antwort mehreren Umfragen zugeteilt werden, also einer Assoziation * : * entsprechen, dann wurde dies die Umfragewerte verfalschen. Denn, eine Auswahl derselben Antwortmoglichkeit in erster und zweiter Umfrage von zwei unterschiedlichen Benutzern liefert ein Ergeb- nis von 2, anstatt 1 in jeder Umfrage. Damit sind beide Umfragen nicht reprasentativ und konnen verworfen werden, da die genaue Anzahl der gewahlten Antwortmoglich- keit nicht der jeweiligen Umfrage zugewiesen werden kann. Die jeweilig ausgewahlten Antworten in den Umfragen werden in der Tabelle SurveyAnswer gespeichert. Enthal- ten sind die Attribute ID als Primarschlussel der Tabelle sowie TimeStamp fur den Zeitpunkt der abgegebenen Antworten. Die Assoziation zwischen SurveyItems und SurveyAnswer ist 1 : *. Das bedeutet, dass eine oder mehrere Antwortmoglichkeiten aus den Antworten der jeweilig zugewiesenen Umfrage ausgewahlt werden konnen. Eine Antwortmoglichkeit kann allerdings nur in einer Umfrage ausgewahlt werden. Wird keine Antwortmoglichkeit gewahlt, wird der Benutzer zur Ergebnisseite weiter- geleitet und sieht die bisherigen Ergebnisse der ausgewahlten Umfrage.
3.2 Relationen Modell
Um redundante Informationen in der Datenbank zu vermeiden, wurde auf die 3. Normalform 21 geachtet.
Eine Relation befindet sich in 3NF, wenn sie in 2NF ist und wenn alle Attribute, die nicht zum Primarschlussel gehoren, direkt von diesem abhangig sind. 22
Mit der 3. Normalform wird erreicht, dass keine Nichtschlusselattribute von einer Menge von Nichtschlusselattributen abhangig sind. Ein Nichtschlusselattribut darfso- mit nur direkt von einem Primarschlussel abhangig sein. Durch die direkte Abhangig- keit des Nichtschlusselattributs zum Primarschlussel bleiben die Informationen auch dann erhalten, wenn ein Nichtschlusselattribut entfernt wird. Erst wenn der Primar- schlussel geloscht wird, werden die Informationen, die mit dem Primarschlussel ver- bunden sind, ebenfalls aus der Datenbank entfernt. Damit wird die Datenqualitat er- hoht und die Datenkonsistenz bleibt erhalten. Die Tabelle Survey enthalt einen Pri- marschlussel der Tabelle mit der Bezeichnung ID und ein Attribut Name, in dem die Umfrage gespeichert wird.
Abbildung in dieser Leseprobe nicht enthalten
Tabelle 1: Beschreibung. Survey
Die Tabelle SurveyItems enthalt einen einmaligen Primarschlussel, mit der Be- zeichnung ID, ein Attribut Name fur die Antwortmoglichkeiten der Umfrage sowie den Fremdschlussel 23 SurveyID, der als Primarschlussel in der Tabelle Survey na- mentlich als ID gefuhrt wird.
Abbildung in dieser Leseprobe nicht enthalten
Die Tabelle SurveyAnswers beinhaltet einen einmaligen Primarschlussel namens ID und ein Attribut TimeStamp aus dem ersichtlich wird, wann die Antwortmoglich- keit abgegeben worden ist. Das Attribut SurveyItemID stellt den Fremdschlussel dieser Tabelle dar, der in der Tabelle SurveyItem ein Primarschlussel ist und unter dem Na- men ID gefunden werden kann.
1 http://git-scm.com
2 http://live.gnome.org/Dia
3 [UML, 2013]
4 [Kofler, 2005]
5 http://www.phpmyadmin.net/
6 [MySQL, 2013a]
7 [Oracle, 2013a]
8 [Oracle, 2013b]
9 [Gabler, 2013]
10 http://www.php.net
11 [Lahres and Rayman, 2009]
12 [Schmidt, 2009]
13 [Theis, 2013]
14 [MySQL, 2013c]
15 MySQL Improved Extension
16 http://getbootstrap.com/
17 Die Webseite reagiert auf unterschiedliche Auflosungen und Eigenschaften des benutzten Endgera- tes
18 [Heise, 2013]
19 [Schmeh, 2009]
20 [Computerlexikon, 2013]
21 [Peter Kropff, 2013]
22 [Prof. Dr. Franz-Karl Schmatzer, 2013] Seite 210f
23 [PHP Kurs, 2013]
- Arbeit zitieren
- Eugen Grinschuk (Autor:in), 2013, Erstellung einer PHP-Anwendung für Internet-Umfragen. Einführung in die Datenbank-Programmierung mit MySQL und PHP, München, GRIN Verlag, https://www.grin.com/document/1225679
Kostenlos Autor werden
Kommentare