.
This commit is contained in:
@@ -6,6 +6,7 @@ require_once '../model/LocalArticleManager.php';
|
||||
require_once '../model/ArticleManager.php';
|
||||
require_once '../validator/article-validator.php';
|
||||
require_once '../../includes/article-block-helper.php';
|
||||
require_once '../../includes/csrf.php';
|
||||
|
||||
if (!isset($_SESSION["user"])) {
|
||||
header("Location: index.php?pfad=login");
|
||||
@@ -14,6 +15,13 @@ if (!isset($_SESSION["user"])) {
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] === "POST") {
|
||||
|
||||
// CSRF-Token prüfen, bevor irgendeine Änderung vorgenommen wird
|
||||
if (!csrf_verify()) {
|
||||
$_SESSION["message"] = "invalid_csrf_token";
|
||||
header("location: ../../index.php?pfad=createArticle");
|
||||
exit();
|
||||
}
|
||||
|
||||
$uploadDir = __DIR__ . '/../../uploads/';
|
||||
if (!file_exists($uploadDir)) {
|
||||
mkdir($uploadDir, 0755, true);
|
||||
|
||||
@@ -5,12 +5,24 @@ if (session_status() === PHP_SESSION_NONE) {
|
||||
|
||||
require_once __DIR__ . "/../model/UserManager.php";
|
||||
require_once __DIR__ . "/../model/ArticleManager.php";
|
||||
require_once __DIR__ . "/../../includes/csrf.php";
|
||||
|
||||
if (!isset($_SESSION["user"])) {
|
||||
header("Location: index.php?pfad=login");
|
||||
exit();
|
||||
}
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] !== "POST") {
|
||||
header("Location: ../../index.php?pfad=profile");
|
||||
exit();
|
||||
}
|
||||
|
||||
if (!csrf_verify()) {
|
||||
$_SESSION["message"] = "invalid_csrf_token";
|
||||
header("Location: ../../index.php?pfad=profile");
|
||||
exit();
|
||||
}
|
||||
|
||||
/*
|
||||
Deregistrierung
|
||||
Funktion: Entfernt User aus der Datenbank und beendet die Session
|
||||
|
||||
@@ -4,6 +4,7 @@ if (session_status() === PHP_SESSION_NONE) {
|
||||
}
|
||||
|
||||
require_once __DIR__ . "/../model/ArticleManager.php";
|
||||
require_once __DIR__ . "/../../includes/csrf.php";
|
||||
|
||||
if (!isset($_SESSION["user"])) {
|
||||
header("Location: index.php?pfad=login");
|
||||
@@ -12,6 +13,13 @@ if (!isset($_SESSION["user"])) {
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] === "POST") {
|
||||
|
||||
// CSRF-Token prüfen, bevor irgendeine Änderung vorgenommen wird
|
||||
if (!csrf_verify()) {
|
||||
$_SESSION["message"] = "invalid_csrf_token";
|
||||
header("location: ../../index.php?pfad=profile");
|
||||
exit();
|
||||
}
|
||||
|
||||
if (isset($_SESSION["user_email"])) {
|
||||
$user = $_SESSION["user_email"];
|
||||
} else {
|
||||
@@ -22,9 +30,10 @@ if ($_SERVER["REQUEST_METHOD"] === "POST") {
|
||||
exit();
|
||||
}
|
||||
|
||||
if (isset($_POST["id"]) && !empty($_POST["id"])) {
|
||||
$id = $_POST["id"];
|
||||
} else {
|
||||
// Die Beitrags-ID muss eine gültige numerische ID sein.
|
||||
$id = filter_input(INPUT_POST, "id", FILTER_VALIDATE_INT);
|
||||
|
||||
if ($id === false || $id === null) {
|
||||
$_SESSION["message"] = "missing_id";
|
||||
header("location: ../../index.php?pfad=profile");
|
||||
exit();
|
||||
@@ -44,4 +53,4 @@ if ($_SERVER["REQUEST_METHOD"] === "POST") {
|
||||
$_SESSION["message"] = "article_deleted";
|
||||
header("location: ../../index.php?pfad=profile");
|
||||
exit();
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ if (session_status() === PHP_SESSION_NONE) {
|
||||
}
|
||||
|
||||
require_once __DIR__ . "/../model/CommentManager.php";
|
||||
require_once __DIR__ . "/../../includes/csrf.php";
|
||||
|
||||
/*
|
||||
* Kommentare dürfen nur über ein POST-Formular gelöscht werden.
|
||||
@@ -44,6 +45,23 @@ if (!isset($_SESSION["user_email"])) {
|
||||
exit();
|
||||
}
|
||||
|
||||
// CSRF-Token prüfen, bevor irgendeine Änderung vorgenommen wird
|
||||
if (!csrf_verify()) {
|
||||
$_SESSION["comment_message"] = "Deine Sitzung ist abgelaufen. Bitte lade die Seite neu.";
|
||||
$_SESSION["comment_message_type"] = "error";
|
||||
|
||||
if ($articleId !== false && $articleId !== null) {
|
||||
header(
|
||||
"Location: index.php?pfad=showArticle&id="
|
||||
. urlencode((string) $articleId)
|
||||
. "#comments"
|
||||
);
|
||||
} else {
|
||||
header("Location: index.php");
|
||||
}
|
||||
exit();
|
||||
}
|
||||
|
||||
/*
|
||||
* Kommentar-ID und Beitrags-ID müssen gültige Zahlen sein.
|
||||
*/
|
||||
@@ -102,4 +120,4 @@ header(
|
||||
. "#comments"
|
||||
);
|
||||
|
||||
exit();
|
||||
exit();
|
||||
@@ -20,6 +20,8 @@ if ($pfad === "login") {
|
||||
include_once "php/controller/confirm-register-controller.php";
|
||||
} elseif ($pfad === "confirm-password") {
|
||||
include_once "php/controller/confirm-password-controller.php";
|
||||
} elseif ($pfad === "profile") {
|
||||
include_once "php/controller/profile-controller.php";
|
||||
} elseif ($pfad === "updateComment") {
|
||||
include_once "php/controller/updateComment-controller.php";
|
||||
} elseif($pfad === "deleteComment") {
|
||||
|
||||
@@ -5,6 +5,12 @@ if (session_status() === PHP_SESSION_NONE) {
|
||||
|
||||
require_once __DIR__ . '/../model/Article.php';
|
||||
require_once __DIR__ . '/../model/ArticleManager.php';
|
||||
require_once __DIR__ . '/../../includes/csrf.php';
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] !== "POST") {
|
||||
header("Location: ../../index.php");
|
||||
exit();
|
||||
}
|
||||
|
||||
// 2. Prüfen, ob eine gültige Artikel-ID übergeben wurde
|
||||
if (isset($_GET["id"]) && !empty($_GET["id"])) {
|
||||
@@ -17,6 +23,13 @@ if (isset($_GET["id"]) && !empty($_GET["id"])) {
|
||||
exit();
|
||||
}
|
||||
|
||||
// CSRF-Token prüfen, bevor der Like-Status verändert wird
|
||||
if (!csrf_verify()) {
|
||||
$_SESSION["message"] = "invalid_csrf_token";
|
||||
header("Location: ../../index.php?pfad=showArticle&id=" . $articleId);
|
||||
exit();
|
||||
}
|
||||
|
||||
try {
|
||||
$articleManager = ArticleManager::getInstance();
|
||||
$articleManager->toggleLike($articleId, $userEmail);
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
<?php
|
||||
if (session_status() === PHP_SESSION_NONE) {
|
||||
session_start();
|
||||
}
|
||||
|
||||
$_SESSION = [];
|
||||
session_destroy();
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ require_once "php/model/Article.php";
|
||||
require_once "php/model/ArticleManager.php";
|
||||
require_once "php/model/CommentManager.php";
|
||||
require_once "php/validator/user-validator.php";
|
||||
require_once "includes/csrf.php";
|
||||
|
||||
$error = null;
|
||||
|
||||
@@ -27,6 +28,7 @@ try {
|
||||
}
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["saveProfile"])) {
|
||||
|
||||
$oldEmail = $_SESSION["user_email"];
|
||||
|
||||
$newEmail = trim($_POST["email"] ?? "");
|
||||
@@ -34,7 +36,12 @@ try {
|
||||
$nachname = trim($_POST["nachname"] ?? "");
|
||||
$password = $_POST["password"] ?? "";
|
||||
|
||||
if (!userEmailValidator($newEmail)) {
|
||||
if (!csrf_verify()) {
|
||||
// CSRF-Token prüfen, bevor irgendeine Änderung vorgenommen wird
|
||||
$error = "Deine Sitzung ist abgelaufen. Bitte lade die Seite neu und versuche es erneut.";
|
||||
$_GET["edit"] = "1";
|
||||
|
||||
} elseif (!userEmailValidator($newEmail)) {
|
||||
$error = "Bitte gib eine gültige E-Mail-Adresse ein.";
|
||||
$_GET["edit"] = "1";
|
||||
|
||||
|
||||
@@ -7,10 +7,14 @@ require_once 'php/model/Article.php';
|
||||
require_once 'php/model/ArticleManager.php';
|
||||
require_once 'php/model/UserManager.php';
|
||||
require_once 'php/model/CommentManager.php';
|
||||
require_once 'php/validator/article-validator.php';
|
||||
|
||||
if (isset($_GET["id"]) && !empty($_GET["id"])){
|
||||
// Die übergebene ID muss eine gültige, positive Zahl sein, bevor sie
|
||||
// weiterverwendet wird. Vorher wurde jeder nicht-leere Wert akzeptiert.
|
||||
$id = isset($_GET["id"]) ? articleIdValidator($_GET["id"]) : false;
|
||||
|
||||
if ($id !== false) {
|
||||
try {
|
||||
$id = $_GET["id"];
|
||||
$articleManager = ArticleManager::getInstance();
|
||||
$article = $articleManager->getArticle($id);
|
||||
if($article != null){
|
||||
@@ -38,7 +42,7 @@ if (isset($_GET["id"]) && !empty($_GET["id"])){
|
||||
}
|
||||
|
||||
$commentManager = CommentManager::getInstance();
|
||||
$comments = $commentManager->getCommentsByArticle($_GET["id"]);
|
||||
$comments = $commentManager->getCommentsByArticle($id); // NEU: validierte ID statt rohem $_GET["id"]
|
||||
|
||||
foreach ($comments as $comment) {
|
||||
if ($comment->isReply()) {
|
||||
|
||||
@@ -8,6 +8,7 @@ require_once '../model/ArticleManager.php';
|
||||
require_once '../model/Article.php';
|
||||
require_once '../validator/article-validator.php';
|
||||
require_once '../../includes/article-block-helper.php';
|
||||
require_once '../../includes/csrf.php'; // NEU: CSRF-Schutz
|
||||
|
||||
if (!isset($_SESSION["user"])) {
|
||||
header("Location: index.php?pfad=login");
|
||||
@@ -16,9 +17,17 @@ if (!isset($_SESSION["user"])) {
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] === "POST") {
|
||||
|
||||
if (isset($_GET["id"]) && !empty($_GET["id"])) {
|
||||
$id = $_GET["id"];
|
||||
} else {
|
||||
// CSRF-Token prüfen, bevor irgendeine Änderung vorgenommen wird
|
||||
if (!csrf_verify()) {
|
||||
$_SESSION["message"] = "invalid_csrf_token";
|
||||
header("location: ../../index.php?pfad=updateArticle");
|
||||
exit();
|
||||
}
|
||||
|
||||
// Die Beitrags-ID muss eine gültige numerische ID sein
|
||||
$id = filter_input(INPUT_GET, "id", FILTER_VALIDATE_INT);
|
||||
|
||||
if ($id === false || $id === null) {
|
||||
$_SESSION["message"] = "missing_id";
|
||||
header("location: ../../index.php?pfad=updateArticle");
|
||||
exit();
|
||||
@@ -27,6 +36,14 @@ if ($_SERVER["REQUEST_METHOD"] === "POST") {
|
||||
try {
|
||||
$articleManager = ArticleManager::getInstance();
|
||||
$article = $articleManager->getArticle($id);
|
||||
|
||||
// Existenz des Beitrags prüfen, bevor auf $article zugegriffen wird.
|
||||
if ($article === null) {
|
||||
$_SESSION["message"] = "missing_id";
|
||||
header("location: ../../index.php?pfad=updateArticle");
|
||||
exit();
|
||||
}
|
||||
|
||||
if ($article->getAuthor() != $_SESSION["user_email"]) {
|
||||
$_SESSION["message"] = "unauthorized_access";
|
||||
header("location: ../../index.php");
|
||||
|
||||
@@ -5,6 +5,7 @@ if (session_status() === PHP_SESSION_NONE) {
|
||||
}
|
||||
|
||||
require_once "php/model/CommentManager.php";
|
||||
require_once "includes/csrf.php";
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] !== "POST") {
|
||||
header("Location: index.php");
|
||||
@@ -16,6 +17,14 @@ if (!isset($_SESSION["user_email"])) {
|
||||
exit();
|
||||
}
|
||||
|
||||
// CSRF-Token prüfen, bevor irgendeine Änderung vorgenommen wird
|
||||
if (!csrf_verify()) {
|
||||
$_SESSION["comment_message"] = "Deine Sitzung ist abgelaufen. Bitte lade die Seite neu.";
|
||||
$_SESSION["comment_message_type"] = "error";
|
||||
header("Location: index.php");
|
||||
exit();
|
||||
}
|
||||
|
||||
$commentId = filter_input(
|
||||
INPUT_POST,
|
||||
"comment_id",
|
||||
@@ -89,4 +98,4 @@ header(
|
||||
. urlencode((string) $articleId)
|
||||
. "#comments"
|
||||
);
|
||||
exit();
|
||||
exit();
|
||||
Reference in New Issue
Block a user