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,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

@@ -1,85 +1,85 @@
<mxfile host="Electron" modified="2023-12-01T16:19:25.109Z" 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="dxKCu5QbLbRewCOaytOA" version="22.1.2" type="device">
<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="875" dy="604" 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">
<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;" vertex="1" parent="1">
<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;" vertex="1" parent="1">
<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;" vertex="1" parent="1">
<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;" vertex="1" parent="1">
<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;" vertex="1" parent="1">
<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;" vertex="1" parent="1">
<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" vertex="1" parent="1">
<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;" edge="1" parent="1" target="8l75yZ3mhxg1qXRySu_G-5">
<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;" edge="1" parent="1" source="8l75yZ3mhxg1qXRySu_G-7" target="8l75yZ3mhxg1qXRySu_G-2">
<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;" edge="1" parent="1" target="8l75yZ3mhxg1qXRySu_G-4">
<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;" edge="1" parent="1" source="8l75yZ3mhxg1qXRySu_G-2" target="8l75yZ3mhxg1qXRySu_G-6">
<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;" edge="1" parent="1">
<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;" vertex="1" parent="1">
<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="E-Mail" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<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;" edge="1" parent="1" source="8l75yZ3mhxg1qXRySu_G-3">
<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;" edge="1" parent="1">
<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;" vertex="1" parent="1">
<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;" vertex="1" parent="1">
<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;" edge="1" parent="1">
<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" />

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.

View File

@@ -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 '<script type="text/javascript">';
echo 'alert("Vielen Dank für Ihre Anmeldung zum Newsletter.");';
echo '</script>';
echo '<script type="text/javascript"> alert("Vielen Dank für Ihre Anmeldung zum Newsletter.");</script>';
//Newsletter counter
$newletterCount++;
@@ -106,9 +104,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
fwrite($newsFile, $newletterCount);
fclose($newsFile);
} else {
echo '<script type="text/javascript">';
echo 'alert("Es gab einen Fehler bei Ihrer Anmeldung. Bitte versuchen Sie es erneut.");';
echo '</script>';
echo '<script type="text/javascript">alert("Es gab einen Fehler bei Ihrer Anmeldung. Bitte versuchen Sie es erneut.");</script>';
}
} else {
$error_string = "";
@@ -116,9 +112,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$error_string .= $error . '\n';
}
echo '<script type="text/javascript">';
echo 'alert("' . $error_string . '");';
echo '</script>';
echo '<script type="text/javascript">alert("' . $error_string . '");</script>';
}
}
@@ -193,7 +187,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// Ausgabe des aktuellen Gerichts
$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>";
}
$tabelle .= "</table>";
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 .= "<sup>".$row_allergen['code']."</sup> ". $row_allergen['name']. ", ";
$verwendete_allergene_string .= "<sup>". htmlspecialchars($row_allergen['code']) ."</sup> ". htmlspecialchars($row_allergen['name']) . ", ";
}
}
echo $verwendete_allergene_string;
echo $verwendete_allergene_string;
?>
<h1>Für Sie nichts dabei? <a href="/Werbeseite/wunschgericht.php">Wunschgericht erfassen</a></h1>
<h1>Für Sie nichts dabei? <a href="../Werbeseite/wunschgericht.php">Wunschgericht erfassen</a></h1>
<h1 id="zahlen">E-Mensa in Zahlen</h1>
<div class="zahlen">
<p><?php echo $besucherCount; ?> Besuche</p>
<p><?php echo $newletterCount; ?> Anmeldungen zum Newsletter</p>
<p>
<p><?php echo htmlspecialchars($besucherCount); ?> Besuche</p>
<p><?php echo htmlspecialchars($newletterCount); ?> Anmeldungen zum Newsletter</p><p>
<?php
$sql_gerichte = "SELECT COUNT(id) FROM gericht";
$result_sql_gerichte = mysqli_query($link, $sql_gerichte);
$ausgabe = mysqli_fetch_assoc($result_sql_gerichte);
echo $ausgabe["COUNT(id)"];
echo htmlspecialchars($ausgabe["COUNT(id)"]);
?>
Speisen
</p>

View File

@@ -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 '<script type="text/javascript"> alert("Fehler bei den übermittelten Daten");</script>';
$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 '<script type="text/javascript"> alert("Ihr Wunschgericht wurde erfolgreich gespeichert!");</script>';
}
else {
echo '<script type="text/javascript"> alert("Es gab einen Fehler: "' . mysqli_error($link) . '</script>';
}
}
mysqli_close($link);