gpt4 book ai didi

php - 使用 $_GET 更新数据库中的数据是否不安全?

转载 作者:行者123 更新时间:2023-12-02 07:47:13 27 4
gpt4 key购买 nike

使用 $_GET 更新/删除 MySQL 表中的数据是否不安全?

我不能使用 $_POST 因为它需要使用 <form>标签

例如:

  <a href="status.php?approve='123'>Unapprove</a>
<?php
if (isLoggedIn() && groupId() == 2) {
if (isset($_GET['id']) && is_numeric($_GET['id']) {
$query = $db->prepare("UPDATE table set unapprove='1' where id = :id");
$query->bindParam(':id', $_GET['id'], PDO::PARAM_STR);
$query->execute();
}
}
?>

请提供示例,您将如何从我的示例或更好的方式中获得安全。

最佳答案

虽然不受 SQL 注入(inject)的影响,但您所做的并不安全,因为受 cross-site request forgery 的限制.

考虑登录到您的站点并访问具有此图像的另一个站点的效果:

<img src="yoursite.com/admin/status.php?approve=123" />

理想情况下,始终对非幂等请求使用 POST。

无论如何,您需要添加一个特定于 session 和链接的 secret token :
href="status.php?approve=123&amp;token=[random_stuff]"

顺便说一句, '123'链接中的可能应该是 123 .

关于php - 使用 $_GET 更新数据库中的数据是否不安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6167359/

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