关于 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”>

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

  • 生成标识电子邮件和用户 ID 的临时哈希字符串。将其放入数据库中。收到删除请求后,检查数据库中是否存在字符串。
  • 检查这个stackoverflow.com/questions/6287903/…
  • 看来您正在从您的ajax cal 调用delete.php 从带有id 的ajax 发送一个令牌。验证令牌和 ID,然后应用删除操作
  • 安全警告:md5(uniqid(rand(), TRUE)) 不是生成随机数的安全方法。
  • 你总是可以使用 RandomLib github.com/ircmaxell/RandomLib


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

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

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

  • 黑客可以提供一些 javascript,它们发出 POST 请求,隐藏在链接中


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

  • i.imgsafe.org/775addadf1.png 数字可以轻松解密你需要使用php password_hash API php.net/manual/en/function.password-hash.php


n


来源:https://www.codenong.com/41612664/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_8857.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?