gpt4 book ai didi

php - 我怎样才能防止这个脚本被随意访问?

转载 作者:行者123 更新时间:2023-11-29 00:03:26 24 4
gpt4 key购买 nike

我正在尝试创建一个简单的 PHP/MySQL 消息系统。以下代码是显示用户收到的消息的页面的一部分,messages.php。用户的消息已从 MySQL 中获取并存储在变量 $messages 中。

foreach($messages as $message) {
// formatting, printing the text, etc.
echo '<a href="msg_del.php?id=' . $message['id'] . '">Remove</a>';
}

这是文件 msg_del.php:

<?php
$id = $_GET['id'];

// Connect to the database
require("../info/dbinfo.php");
$db_user = constant("DB_USER");
$db_pass = constant("DB_PASS");
$db_name = constant("DB_NAME");
$db_server = constant("DB_SERVER");

try {
$conn = new PDO("mysql:host=$db_server;dbname=$db_name", $db_user, $db_pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("DELETE FROM messages WHERE id = " . $conn->quote($id) . ";");
$stmt->execute();
}
catch(PDOException $e) {
echo "Error connecting to database!";
exit();
}

// Redirect to messages page
header("Location: messages.php");
exit();
?>

该代码功能齐全,但问题是任何人都可以在浏览器中键入 msg_del.php?id=SOMEID 并删除消息。我如何才能将其保护到只能从 messages.php 上的链接中删除消息的位置?

最佳答案

您将需要在您的请求中使用某种 token 来验证这确实是来自您系统的有效请求。

一种方法是附加一个 nonce根据您的要求。这可确保请求来自您控制的表单,并且不会有人使用旧表单来欺骗新请求。

many nonce libraries for PHP您可以选择。

关于php - 我怎样才能防止这个脚本被随意访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28651241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com