SQLI Pretection mysqli_real_escape_string()
XSS Pretection htmlspecialchars ()
This commit is contained in:
S170H
2023-12-02 23:10:15 +01:00
parent 644248d1ff
commit 3206c60ce2
7 changed files with 240 additions and 46 deletions

View File

@@ -0,0 +1,19 @@
<mxfile host="Electron" modified="2023-12-01T15:21:01.688Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.1.2 Chrome/114.0.5735.289 Electron/25.9.4 Safari/537.36" etag="78gUQK1TRnweegfurtHK" version="22.1.2" type="device">
<diagram name="Seite-1" id="jhCbnHoXzx65MXILfqUJ">
<mxGraphModel dx="1050" dy="725" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="8l75yZ3mhxg1qXRySu_G-1" value="" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="320" y="240" width="160" height="80" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-2" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="80" y="240" width="160" height="80" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-3" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="560" y="240" width="160" height="80" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -0,0 +1,91 @@
<mxfile host="Electron" modified="2023-12-02T22:05:22.197Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.1.2 Chrome/114.0.5735.289 Electron/25.9.4 Safari/537.36" etag="rtvPorWLK5CfuI4500ka" version="22.1.2" type="device">
<diagram name="Seite-1" id="jhCbnHoXzx65MXILfqUJ">
<mxGraphModel dx="1048" dy="722" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="8l75yZ3mhxg1qXRySu_G-1" value="erstellt" style="rhombus;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="320" y="240" width="160" height="80" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-2" value="Wunschgericht" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="560" y="240" width="160" height="80" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-3" value="Ersteller" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="80" y="240" width="160" height="80" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-4" value="Name" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="560" y="140" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-5" value="Beschreibung" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="680" y="140" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-6" value="Erstellungs-datum" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="500" y="180" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-7" value="ID" style="ellipse;whiteSpace=wrap;html=1;fontStyle=4" parent="1" vertex="1">
<mxGeometry x="620" y="180" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-12" value="" style="endArrow=none;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" target="8l75yZ3mhxg1qXRySu_G-5" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="240" as="sourcePoint" />
<mxPoint x="750" y="190" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-13" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.621;entryY=0.005;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="8l75yZ3mhxg1qXRySu_G-7" target="8l75yZ3mhxg1qXRySu_G-2" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="730" y="280" as="sourcePoint" />
<mxPoint x="780" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-14" value="" style="endArrow=none;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" target="8l75yZ3mhxg1qXRySu_G-4" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="600" y="240" as="sourcePoint" />
<mxPoint x="628" y="154" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-15" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=1;entryDx=0;entryDy=0;exitX=0.15;exitY=0.003;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="8l75yZ3mhxg1qXRySu_G-2" target="8l75yZ3mhxg1qXRySu_G-6" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="610" y="250" as="sourcePoint" />
<mxPoint x="610" y="170" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-17" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="480" y="279.66" as="sourcePoint" />
<mxPoint x="560" y="279.66" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-18" value="Name" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="80" y="160" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-19" value="&lt;u&gt;E-Mail&lt;/u&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="170" y="160" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-20" value="" style="endArrow=none;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;" parent="1" source="8l75yZ3mhxg1qXRySu_G-3" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="100" y="260" as="sourcePoint" />
<mxPoint x="120" y="200" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-21" value="" style="endArrow=none;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="209.65999999999997" y="240" as="sourcePoint" />
<mxPoint x="209.65999999999997" y="200" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-22" value="N" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="530" y="250" width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-23" value="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="240" y="250" width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-24" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="240" y="280" as="sourcePoint" />
<mxPoint x="320" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -0,0 +1,91 @@
<mxfile host="Electron" modified="2023-12-02T22:05:19.234Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.1.2 Chrome/114.0.5735.289 Electron/25.9.4 Safari/537.36" etag="UqWXQEsGpaBe1QuKew26" version="22.1.2" type="device">
<diagram name="Seite-1" id="jhCbnHoXzx65MXILfqUJ">
<mxGraphModel dx="1048" dy="722" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="8l75yZ3mhxg1qXRySu_G-1" value="erstellt" style="rhombus;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="320" y="240" width="160" height="80" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-2" value="Wunschgericht" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="560" y="240" width="160" height="80" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-3" value="Ersteller" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="80" y="240" width="160" height="80" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-4" value="Name" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="560" y="140" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-5" value="Beschreibung" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="680" y="140" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-6" value="Erstellungs-datum" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="500" y="180" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-7" value="ID" style="ellipse;whiteSpace=wrap;html=1;fontStyle=4" parent="1" vertex="1">
<mxGeometry x="620" y="180" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-12" value="" style="endArrow=none;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" target="8l75yZ3mhxg1qXRySu_G-5" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="240" as="sourcePoint" />
<mxPoint x="750" y="190" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-13" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.621;entryY=0.005;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="8l75yZ3mhxg1qXRySu_G-7" target="8l75yZ3mhxg1qXRySu_G-2" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="730" y="280" as="sourcePoint" />
<mxPoint x="780" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-14" value="" style="endArrow=none;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" target="8l75yZ3mhxg1qXRySu_G-4" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="600" y="240" as="sourcePoint" />
<mxPoint x="628" y="154" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-15" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=1;entryDx=0;entryDy=0;exitX=0.15;exitY=0.003;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="8l75yZ3mhxg1qXRySu_G-2" target="8l75yZ3mhxg1qXRySu_G-6" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="610" y="250" as="sourcePoint" />
<mxPoint x="610" y="170" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-17" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="480" y="279.66" as="sourcePoint" />
<mxPoint x="560" y="279.66" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-18" value="Name" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="80" y="160" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-19" value="&lt;u&gt;E-Mail&lt;/u&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="170" y="160" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-20" value="" style="endArrow=none;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;" parent="1" source="8l75yZ3mhxg1qXRySu_G-3" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="100" y="260" as="sourcePoint" />
<mxPoint x="120" y="200" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-21" value="" style="endArrow=none;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="209.65999999999997" y="240" as="sourcePoint" />
<mxPoint x="209.65999999999997" y="200" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-22" value="N" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="530" y="250" width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-23" value="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="240" y="250" width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="8l75yZ3mhxg1qXRySu_G-24" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="240" y="280" as="sourcePoint" />
<mxPoint x="320" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

BIN
M4/Dossier/ERD M4-1-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

86
M4/Dossier/M4.md Normal file
View File

@@ -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 .= "<tr class=\"speisen\"><td>" . $row_gerichte['name'] . " <sup>" . $allergene . "</sup></td><td>" . $preisintern . "€</td><td>" . $preisextern . "€</td><td>Kein Bild in der Datenbank </td></tr>";
$tabelle .= "<tr class=\"speisen\"><td>" . htmlspecialchars($row_gerichte['name']) . " <sup>" . htmlspecialchars($allergene) . "</sup></td><td>" . htmlspecialchars($preisintern) . "€</td><td>" . htmlspecialchars($preisextern) . "€</td><td>Kein Bild in der Datenbank </td></tr>";
// Zeile 202
$verwendete_allergene_string .= "<sup>".$row_allergen['code']."</sup> ". $row_allergen['name']. ", ";
$verwendete_allergene_string .= "<sup>". htmlspecialchars($row_allergen['code']) ."</sup> ". 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.