Add CSRF Checks to notifications and ensure the user dismissing the notification is their own notification

This commit is contained in:
johnnyq
2026-03-05 17:51:20 -05:00
parent a81edc122d
commit 30357b9cf7
2 changed files with 4 additions and 2 deletions

View File

@@ -141,7 +141,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<td><?php echo $notification_dismissed_at; ?></td>
<?php } ?>
<?php if(!$dismissed_filter) { ?>
<td class="text-center"><a class="btn btn-secondary btn-sm" href="post.php?dismiss_notification=<?php echo $notification_id; ?>" title="Dismiss"><i class="fas fa-check"></i></a></td>
<td class="text-center"><a class="btn btn-secondary btn-sm" href="post.php?dismiss_notification=<?= $notification_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>" title="Dismiss"><i class="fas fa-check"></i></a></td>
<?php } ?>
</tr>

View File

@@ -20,9 +20,11 @@ if(isset($_POST['change_records_per_page'])){
if (isset($_GET['dismiss_notification'])) {
validateCSRFToken($_GET['csrf_token']);
$notification_id = intval($_GET['dismiss_notification']);
mysqli_query($mysqli,"UPDATE notifications SET notification_dismissed_at = NOW(), notification_dismissed_by = $session_user_id WHERE notification_id = $notification_id");
mysqli_query($mysqli,"UPDATE notifications SET notification_dismissed_at = NOW(), notification_dismissed_by = $session_user_id WHERE notification_user_id = $session_user_id AND notification_id = $notification_id");
// Logging
logAction("Notification", "Dismiss", "$session_name dismissed notification");