gpt4 book ai didi

PHP MySQL 增删改查 : Am I deleting safely?

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

我正在尝试确定使用 php 和 MySQL 在 CRUD 中进行删除的最安全方法或最佳实践。我被教导的方式是创造<a href="delete.php=?{$id}">Delete</a>链接并让 delete.php 运行我的 delete()$_GET 中传递的 id 上的方法变量。

  1. 如果我允许一个网络爬虫看到这个页面,如果它抓取了每个页面上的每个删除链接,它不能删除整个数据库吗?

  2. 不知道有人想出了调用 delete() 的页面在 $_GET 中使用他们想要的任何数字手动加载 url并删除记录?

  3. 永远不要通过 CRUD 删除任何内容,而是向表中添加一个 Deleted 列并使其对用户看起来好像已被删除会更好吗?

  4. 我只是偏执狂吗?

最佳答案

如果我允许网络爬虫看到这个页面,如果它抓取了每个页面上的每个删除链接,它不能删除整个数据库吗?

是的。

莫名其妙地找出调用 delete() 的页面的人是否可以在 $_GET 中手动加载带有他们想要的任何数字的 url 并删除记录?

是的。

永远不要通过 CRUD 删除任何内容,而是向表中添加一个 Deleted 列并使其对用户看起来好像已被删除会更好吗?

如果你真的想删除它,imo,删除更好。

我只是偏执狂吗?

完全没有。


如果您只有一个包含以下内容的 delete.php 脚本(忽略 CRUD atm 并谈论 MySQL):

$q = "DELETE FROM mytable WHERE row = $_GET['id']";
$r = mysql_query($q);

然后是的,您的前两个问题实际上是会发生什么。偶然发现这些链接的蜘蛛会导致删除数据库记录,而发现这些链接的恶意用户可能会类似地从数据库中删除行。

这通常有两种处理方式:

  1. 不要向不应该拥有 delete.php 链接的人(未登录的人、未以管理员身份登录的人等)提供 delete.php 链接——但请注意 这只是一个小细节,并不能保护您的数据库免遭意外/恶意删除。

  2. 在 delete.php 脚本中,确认允许运行它的人删除行。大部分时间是通过检查登录时设置的 session 变量来完成的(例如 if($_SESSION['can_delete'] != true){ die('Insufficient Privileges'); })。

尽管不向不应该拥有 delete.php 链接的人提供 delete.php 链接是有帮助的,但如果您想要它,则需要在 delete.php 脚本中明确检查 权限安全。

关于PHP MySQL 增删改查 : Am I deleting safely?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10458319/

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