From 3206c60ce2f953a372a54f46f9382451443ae2d6 Mon Sep 17 00:00:00 2001 From: S170H <64917343+S170H@users.noreply.github.com> Date: Sat, 2 Dec 2023 23:10:15 +0100 Subject: [PATCH] M4 A2 SQLI Pretection mysqli_real_escape_string() XSS Pretection htmlspecialchars () --- M4/{ => Dossier}/.$Aufgabe1.drawio.bkp | 0 M4/Dossier/.$Aufgabe1.drawio.dtmp | 91 +++++++++++++++++++++++++ M4/{ => Dossier}/Aufgabe1.drawio | 42 ++++++------ M4/Dossier/ERD M4-1-1.png | Bin 0 -> 57262 bytes M4/Dossier/M4.md | 86 +++++++++++++++++++++++ M4/Werbeseite/index.php | 29 +++----- M4/Werbeseite/wunschgericht.php | 38 +++++++++-- 7 files changed, 240 insertions(+), 46 deletions(-) rename M4/{ => Dossier}/.$Aufgabe1.drawio.bkp (100%) create mode 100644 M4/Dossier/.$Aufgabe1.drawio.dtmp rename M4/{ => Dossier}/Aufgabe1.drawio (74%) create mode 100644 M4/Dossier/ERD M4-1-1.png create mode 100644 M4/Dossier/M4.md diff --git a/M4/.$Aufgabe1.drawio.bkp b/M4/Dossier/.$Aufgabe1.drawio.bkp similarity index 100% rename from M4/.$Aufgabe1.drawio.bkp rename to M4/Dossier/.$Aufgabe1.drawio.bkp diff --git a/M4/Dossier/.$Aufgabe1.drawio.dtmp b/M4/Dossier/.$Aufgabe1.drawio.dtmp new file mode 100644 index 0000000..92492d0 --- /dev/null +++ b/M4/Dossier/.$Aufgabe1.drawio.dtmp @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/M4/Aufgabe1.drawio b/M4/Dossier/Aufgabe1.drawio similarity index 74% rename from M4/Aufgabe1.drawio rename to M4/Dossier/Aufgabe1.drawio index 47dcdad..0372087 100644 --- a/M4/Aufgabe1.drawio +++ b/M4/Dossier/Aufgabe1.drawio @@ -1,85 +1,85 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/M4/Dossier/ERD M4-1-1.png b/M4/Dossier/ERD M4-1-1.png new file mode 100644 index 0000000000000000000000000000000000000000..cd34f7f080d10980dec63465497dba94a234d404 GIT binary patch literal 57262 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

{IKbEhxq2RxmY+FP8RT+{mj?W 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 literal 0 HcmV?d00001 diff --git a/M4/Dossier/M4.md b/M4/Dossier/M4.md new file mode 100644 index 0000000..534d5da --- /dev/null +++ b/M4/Dossier/M4.md @@ -0,0 +1,86 @@ +# Aufgabe 1 +> Dauer: 2 h +## 1) +![ERD](ERD M4-1-1.png) +## 2) Datenbankentwurf in Relationenschreibweise +```sql +use emensawerbeseite; + +-- Tabelle 'Ersteller' erstellen +CREATE TABLE IF NOT EXISTS Ersteller ( + EMail VARCHAR(255) PRIMARY KEY, + Name VARCHAR(255) DEFAULT 'anonym' +); + +-- Tabelle 'Wunschgericht' erstellen +CREATE TABLE IF NOT EXISTS Wunschgericht ( + ID INT AUTO_INCREMENT PRIMARY KEY, + Name VARCHAR(255) NOT NULL, + Beschreibung TEXT, + Erstellungsdatum DATE NOT NULL, + Ersteller_EMail VARCHAR(255) NOT NULL, + FOREIGN KEY (Ersteller_EMail) REFERENCES Ersteller(EMail) +); +``` +## 6) +### a) +````sql +select * from wunschgericht order by Erstellungsdatum desc limit 5; +```` +### b) +````sql +-- basierend auf M3 6) 4) +select ersteller.Name, + count(Ersteller_EMail) as anzahl from wunschgericht, ersteller where ersteller.EMail = wunschgericht.Ersteller_EMail +group by Ersteller_EMail +order by anzahl desc ; +```` +--- +# Aufgabe 2 +> Dauer: 2h + +Bei der Übergabe von Daten in die DB müssen diese geprüft werden. +Bei der Ausgabe von Daten aus der DB im HTML Code müssen diese Maskiert werden. + ````php +// wunschgericht.php +// Zeile 33 +$sql_ersteller_exists = "SELECT * FROM ersteller WHERE EMail = '" . $ersteller_email . "'"; +$sql_ersteller_exists = "SELECT * FROM ersteller WHERE EMail = '" . mysqli_real_escape_string($link, $ersteller_email) . "'"; + +// Zeile 36 +$sql_ersteller = "INSERT INTO ersteller(EMail, Name) VALUES ('" . $ersteller_email . "','" . $ersteller_name . "')"; +$sql_ersteller = "INSERT INTO ersteller(EMail, Name) VALUES ('" . mysqli_real_escape_string($link, $ersteller_email) . "','" . mysqli_real_escape_string($link, $ersteller_name) . "')"; + +// Zeile 42 +$sql = "INSERT INTO wunschgericht(Name, Beschreibung, Erstellungsdatum, Ersteller_EMail) VALUES ('" . $gericht_name . "','" . $gericht_beschreibung . "','". $date ."','" . $ersteller_email . "')"; +$sql = "INSERT INTO wunschgericht(Name, Beschreibung, Erstellungsdatum, Ersteller_EMail) VALUES ('" . mysqli_real_escape_string($link, $gericht_name) . "','" . mysqli_real_escape_string($link, $gericht_beschreibung) . "','".$date."','" . mysqli_real_escape_string($link, $ersteller_email) . "')"; +?> +```` + +````php +// index.php +// Zeile 43 +$sql_besucher = "UPDATE besucher_counter SET besucher =".$besucherCount; +$sql_besucher = "UPDATE besucher_counter SET besucher =". mysqli_real_escape_string($link, $besucherCount); + +// Zeile 190 +$tabelle .= "" . $row_gerichte['name'] . " " . $allergene . "" . $preisintern . "€" . $preisextern . "€Kein Bild in der Datenbank "; +$tabelle .= "" . htmlspecialchars($row_gerichte['name']) . " " . htmlspecialchars($allergene) . "" . htmlspecialchars($preisintern) . "€" . htmlspecialchars($preisextern) . "€Kein Bild in der Datenbank "; + + +// Zeile 202 +$verwendete_allergene_string .= "".$row_allergen['code']." ". $row_allergen['name']. ", "; +$verwendete_allergene_string .= "". htmlspecialchars($row_allergen['code']) ." ". htmlspecialchars($row_allergen['name']) . ", "; + +// Zeile 214f +echo $besucherCount; +echo $newletterCount; + +echo htmlspecialchars($besucherCount); +echo htmlspecialchars($newletterCount); + +// Zeile 220 +echo $ausgabe["COUNT(id)"]; +echo htmlspecialchars($ausgabe["COUNT(id)"]); +```` +Bei der Newsletteranmeldung sollte man sich auch ggf. überlegen, wie man die Eingaben prüft un zu vermeiden, das schadhafter Code gespeichert und später abgerufen wird. diff --git a/M4/Werbeseite/index.php b/M4/Werbeseite/index.php index 80da3e9..9bdd6b0 100644 --- a/M4/Werbeseite/index.php +++ b/M4/Werbeseite/index.php @@ -39,7 +39,7 @@ $besucher = mysqli_fetch_assoc($result_sql_besucher); //Updatet Besucher Zahl $besucherCount = $besucher["besucher"] + 1; -$sql_besucher = "UPDATE besucher_counter SET besucher =".$besucherCount; +$sql_besucher = "UPDATE besucher_counter SET besucher =". mysqli_real_escape_string($link, $besucherCount); $result_sql_besucher = mysqli_query($link, $sql_besucher); //Newletter counter @@ -96,9 +96,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') { $current_data[] = $data; if (file_put_contents($file, json_encode($current_data))) { - echo ''; + echo ''; //Newsletter counter $newletterCount++; @@ -106,9 +104,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') { fwrite($newsFile, $newletterCount); fclose($newsFile); } else { - echo ''; + echo ''; } } else { $error_string = ""; @@ -116,9 +112,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') { $error_string .= $error . '\n'; } - echo ''; + echo ''; } } @@ -193,7 +187,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Ausgabe des aktuellen Gerichts - $tabelle .= "" . $row_gerichte['name'] . " " . $allergene . "" . $preisintern . "€" . $preisextern . "€Kein Bild in der Datenbank "; + $tabelle .= "" . htmlspecialchars($row_gerichte['name']) . " " . htmlspecialchars($allergene) . "" . htmlspecialchars($preisintern) . "€" . htmlspecialchars($preisextern) . "€Kein Bild in der Datenbank "; } $tabelle .= ""; echo $tabelle; @@ -205,26 +199,25 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') { while ($row_allergen = mysqli_fetch_assoc($result_sql_allergen)){ if (in_array($row_allergen['code'], $verwendete_allergene_code)){ - $verwendete_allergene_string .= "".$row_allergen['code']." ". $row_allergen['name']. ", "; + $verwendete_allergene_string .= "". htmlspecialchars($row_allergen['code']) ." ". htmlspecialchars($row_allergen['name']) . ", "; } } - echo $verwendete_allergene_string; + echo $verwendete_allergene_string; ?> -

Für Sie nichts dabei? Wunschgericht erfassen

+

Für Sie nichts dabei? Wunschgericht erfassen

E-Mensa in Zahlen

-

Besuche

-

Anmeldungen zum Newsletter

-

+

Besuche

+

Anmeldungen zum Newsletter

Speisen

diff --git a/M4/Werbeseite/wunschgericht.php b/M4/Werbeseite/wunschgericht.php index ca3e097..b0ec1d9 100644 --- a/M4/Werbeseite/wunschgericht.php +++ b/M4/Werbeseite/wunschgericht.php @@ -17,14 +17,38 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') { exit(); } - // Einfügen in die Datenbank - $sql = "INSERT INTO wunschgericht (name, beschreibung) VALUES ('" . mysqli_real_escape_string($link, $gericht_name) . "', '" . mysqli_real_escape_string($link, $gericht_beschreibung) . "')"; - $result = mysqli_query($link, $sql); + $error_count = 0; + $spam_domains = array("rcpt.at", "damnthespam.at", "wegwerfmail.de", "trashmail"); - if ($result) { - echo "Ihr Wunschgericht wurde erfolgreich gespeichert!"; - } else { - echo "Es gab einen Fehler: " . mysqli_error($link); + foreach ($spam_domains as $domain) { + if (str_contains($ersteller_email, $domain)) { + echo ''; + $error_count++; + break; + } + } + + if(!$error_count){ + // Ersteller in DB eintragen + $sql_ersteller_exists = "SELECT * FROM ersteller WHERE EMail = '" . mysqli_real_escape_string($link, $ersteller_email) . "'"; + $result_ersteller_exists = mysqli_query($link,$sql_ersteller_exists); + if(mysqli_num_rows($result_ersteller_exists) == 0){ + $sql_ersteller = "INSERT INTO ersteller(EMail, Name) VALUES ('" . mysqli_real_escape_string($link, $ersteller_email) . "','" . mysqli_real_escape_string($link, $ersteller_name) . "')"; + $result_ersteller = mysqli_query($link,$sql_ersteller); + } + + // Gericht in die DB eintragen + $date = date("Y-m-d"); + $sql = "INSERT INTO wunschgericht(Name, Beschreibung, Erstellungsdatum, Ersteller_EMail) + VALUES ('" . mysqli_real_escape_string($link, $gericht_name) . "','" . mysqli_real_escape_string($link, $gericht_beschreibung) . "','".$date."','" . mysqli_real_escape_string($link, $ersteller_email) . "')"; + $result = mysqli_query($link, $sql); + + if ($result) { + echo ''; + } + else { + echo ''; + } } mysqli_close($link);