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