关于 mysql:保护您通过电子邮件发送的 delete.php 链接

Protect your delete.php links sended by email

如何保护我的 delete.php 文件

1
2
3
4
5
6
7
8
$id = (int) $_GET['id'];
$delete = $connection->prepare("DELETE FROM `articles` WHERE `id` = :id");
$delete->execute(['id' => $id]);
if($delete->rowCount() > 0){
   echo 'SUCCESS';
}else{
   echo 'ERROR';
}

假设我登录了我的网站面板并且我的会话正在进行中

1
 $_SESSION['user_id'] = My_ID;

当我登录时,一些黑客在我的电子邮件中发送了一个链接

1
 <img src="http://my.website.com/panel/articles/delete.php?id=353">

该链接将删除我的文章或最糟糕的是我网站的完整主要部分,这是非常危险的。那么我怎样才能保护我的删除链接从那个


这是一个很好的例子,为什么它在 HTTP RFC 中声明,GET 方法应该只用于请求数据,而对于数据操作它应该使用 POST 方法。

为了保护 POST 表单免受此类欺诈,必须使用通常的 CSRF 保护。简而言之,每个表单都应该使用一个秘密令牌进行签名,并存储在会话中。因此,网站将能够验证表单是否由引擎发出。

可以在这里找到一个例子,防止php中的csrf


您可以构建两步确认表单
当用户访问文章/delete.php?id=353 时,您只需计算一些哈希 'qweadasdasdqw' 并提供链接,就像这个文章/delete.php?id=353


n