Opdracht:
Uitwerking:
Opdracht:
Uitwerking:
<body>
<div class="body-container">
<h1 class="heading">Gastenboek 'De lekkage'</h1>
<form action="guestbook.php" method="post">
: <input type="email" name="email"><br />
Email: <textarea name="text" minlength="4"></textarea><br />
Bericht<?php if (userIsAdmin($conn)) {
echo '<input type="color" value="red" name="color">';
?>
} <input type="hidden" name="token" value="<?php echo $token; ?>">
<input type="submit">
</form>
<hr />
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$email = htmlspecialchars($_POST['email']);
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
$text = htmlspecialchars($_POST['text']);
$admin = 0;
$color = 'red';
if (userIsAdmin($conn)) {
$admin = 1;
$color = $_POST['color'] ?? 'red';
}$conn->query(
"INSERT INTO `entries`(`email`, `color`, `admin`, `text`)
VALUES ('$email', '$color', '$admin', '$text');"
;
)else {
} echo "geen valide email";
}
}
$result = $conn->query("SELECT `email`, `text`, `color`, `admin` FROM `entries`");
foreach ($result as $row) {
print "<div style=\"color: " . $row['color'] . "\">Email: " . $row['email'];
if ($row['admin']) {
print '♔';
}print ": " . $row['text'] . "</div><br/>";
}
function userIsAdmin($conn)
{if (isset($_COOKIE['admin'])) {
$adminCookie = $_COOKIE['admin'];
$result = $conn->query("SELECT cookie FROM `admin_cookies`");
foreach ($result as $row) {
if ($adminCookie === $row['cookie']) {
return true;
}
}
}
return false;
}
?>
<hr />
<div class="disclosure-notice">
<p>
Hierbij krijgt iedereen expliciete toestemming om dit Gastenboek zelf te gebruiken voor welke doeleinden dan
ook</p>
<p>
Onthoud dat je voor andere websites altijd je aan de principes van<a href="https://en.wikipedia.org/wiki/Responsible_disclosure" target="_blank" style="color: lightgray;">
Responsible Disclosure</a> wilt houden.
</p>
</div>
</div>
</body>
Opdracht: 1. Voeg het fake-form.html toe aan de map van je guestbook.php 2. Vul het formulier in en kijk wat er gebeurt 3. Pas guestbook.php aan zodat fake-form.html geen berichten meer kan posten via guestbook.php gebruik hiervoor de token die al in het formulier zit en wat we van de gebruiker bewaren in de session 4. Valideer dat het fake-form niet meer in staat is om nog meer in het guestbook te zetten.
Uitwerking:
<html>
<head>
<body>