我应该使用用户可以运行的PHP脚本删除MySQL条目吗?

我应该使用用户可以运行的PHP脚本删除MySQL条目吗?,php,mysql,database,security,web,Php,Mysql,Database,Security,Web,我目前正在一个网站上工作,该网站将有很多用户。这些用户存储在一个表中,每个用户都有一个唯一的id。网站将包含用户可以完成的项目,这些项目也存储在一个具有唯一id的单独表中。 我需要让用户有一个可以查看的页面,该页面将显示他们当前正在处理的所有项目的列表。 为此,我将设置另一个表,其中每一行都有用户id以及他们正在处理的项目id。所有这些都将工作正常,但我想允许用户取消他们的项目,如果他们愿意。我知道怎么做,但是我已经读到,直接从php脚本中删除行是不安全的,因此用于从php访问数据库的用户没有“

我目前正在一个网站上工作,该网站将有很多用户。这些用户存储在一个表中,每个用户都有一个唯一的id。网站将包含用户可以完成的项目,这些项目也存储在一个具有唯一id的单独表中。
我需要让用户有一个可以查看的页面,该页面将显示他们当前正在处理的所有项目的列表。

为此,我将设置另一个表,其中每一行都有用户id以及他们正在处理的项目id。所有这些都将工作正常,但我想允许用户取消他们的项目,如果他们愿意。我知道怎么做,但是我已经读到,直接从php脚本中删除行是不安全的,因此用于从php访问数据库的用户没有“删除”权限。
我想知道,当用户指定要删除哪个项目时,我是否应该随意删除行,或者我是否应该有另一个字段,并简单地将每个用户项目行标记为已删除在另一个字段中“取消”,这样我就可以自己处理它们了。

为了最大的安全性,您应该在数据库表中设置一个名为“isActive”的参数,或者类似的参数,即表示布尔值的位数据类型。如果该布尔值为false,则不要从数据库中删除项目,只需隐藏该表数据(不要在站点上显示它,而是将数据存储在数据库中)。这样,您的数据库不仅不会受到想要破坏数据的恶意用户的攻击,而且如果他们希望重新恢复数据,项目也可以“重新恢复”。如果项目搁置了一段时间,比如说14天,只要让服务器删除它,而不是用户,如果你愿意的话。这在过去对我很有效


希望这有帮助

解决此问题的最常见方法是在表中有一个字段,可用于将记录标记为已删除。这将是普通用户在删除表时必须访问的唯一权限。有些人还有一个完全删除,它清楚地表明,在操作完成后,它将永远无法访问


就个人而言,我更倾向于保留管理员的完全删除权限,允许用户仅将记录标记为已删除。如果您担心空间问题,请同时添加上次访问的字段,并按设定的时间间隔安排一次调用,以便对标记为已删除且在一定时间内未处于活动状态的任何记录执行完全删除。

选项2,这样,如果意外删除项目,您可以恢复该项目。1)删除权限不安全。。。对于应用程序来说,对这类事情拥有删除权限是很常见的。2) 如果您想针对意外删除进行反击,则使用
deleted
标志可能是更好的方法。就安全性而言,您应该遵循“最小特权”原则。创建具有不同权限级别的不同mysql用户名:只读、插入/更新、插入/更新/删除。脚本应使用具有最低权限的ID连接到数据库。因此,常规更新脚本不能意外删除某些内容,只有删除脚本才能这样做。谢谢大家!这是我的想法,但我需要一些额外的建议:)