Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';从mysql中删除数据最安全的方法是什么?(PHP/Mysql)_Php_Mysql - Fatal编程技术网

什么';从mysql中删除数据最安全的方法是什么?(PHP/Mysql)

什么';从mysql中删除数据最安全的方法是什么?(PHP/Mysql),php,mysql,Php,Mysql,我想允许用户和我(管理员)删除mysql中的数据。 我曾经有remove.php,它可以从需要删除的任何内容中获取$\u,例如。。。remove.php?action=post&posting\u id=2。但我明白了,任何人都可以滥用它并删除我的所有数据 那么,对于用户和我来说,什么是删除信息的最安全方式,而不会变得疯狂和艰难呢?我只是个初学者:) 我不确定是否可以使用POST,因为没有表单,数据也没有变化。 好吗?还是会有太多的帖子、用户信息、评论等 例如:James想删除他的一个帖子(它是

我想允许用户和我(管理员)删除mysql中的数据。 我曾经有remove.php,它可以从需要删除的任何内容中获取$\u,例如。。。remove.php?action=post&posting\u id=2。但我明白了,任何人都可以滥用它并删除我的所有数据

那么,对于用户和我来说,什么是删除信息的最安全方式,而不会变得疯狂和艰难呢?我只是个初学者:) 我不确定是否可以使用POST,因为没有表单,数据也没有变化。 好吗?还是会有太多的帖子、用户信息、评论等

例如:James想删除他的一个帖子(它是posting_id=5)。因此,他单击删除链接,然后转到remove.php?action=post&posting\u id=5

编辑:好吧,现在我有点困惑。虽然我不能保证100%的安全,但如何使用$u帖子做到这一点?
所以我应该使用GETs来获取要删除的所有数据。php,然后有一个确认提交按钮,当用户点击它时,它会将所有数据放到POST中并从dbc中删除?

删除记录是一种可怕的做法。如果你或某人犯了错误,就没有解决问题的真正途径。被删除的记录很难恢复

您可以添加一个“活动”位(例如布尔值)列,而不是删除记录,当用户“删除”记录时,该列将被关闭。基本上,您的用户将通过关闭记录来暂停记录,并且记录将在出现错误或滥用时保存,但在用户看来是“已删除”。要使此操作与其他查询一起工作,只需添加一个active=1的where子句

然后,您可以拥有一个以特定日期间隔运行的实用程序脚本,该脚本将清除不推荐使用的、过时的记录。对于这种类型的维护,您还需要某种类型的时间戳


只是一个想法。考虑一下它的价值。

好吧,首先你必须用一个登录脚本对用户进行身份验证

如果您想要最简单的解决方案,那么我建议使用简单的.htaccess来保护您拥有remove.php的目录

如果不同的用户有不同的权限删除数据库条目,那么您可能应该创建一个PHP登录脚本并使用PHP会话

如果我愚蠢的话,就别理我,但我花了很长时间寻找了一个简单的PHP登录教程,可以放在一个真实的网站上(不使用session\u register(),使用mysql\u real\u escape\u string(),htmlspecialchars()等等),我就是找不到

可能其中一个最接近,您只需将session_register()变量替换为$_sessionone,它就可以在没有register_globals的情况下工作(PHP5中的默认设置)。

我会回应,我更喜欢将记录“标记”为已删除,而不是实际删除数据。显然,您需要检查经过身份验证的用户是否有删除帖子的权限

但是,必须指出的是,
$\u GET
即使使用身份验证也不安全,因为

想象一下,如果亚马逊根据
GET
请求向您的购物车添加物品。我所要做的就是在我的页面上放一个带有该URL的图像,每个访问该页面并登录亚马逊的人都会自动添加产品

为了配合你的例子,我不喜欢Jame的帖子,所以我在我的网站上放了一张这样的图片:

<img src='http://example.com/remove.php?action=post&posting_id=5'>

我给他发了一个链接到我的页面,请他检查一下,希望在他登录到你的网站的时候。因为,当然,他点击了那个小小的“让我登录”按钮


因此,您关心使用
GET
是正确的。如果您不想在页面上乱扔表单,那么通过
POST

确认操作不是个坏主意!我想我会为一些重要的事情做这些,比如删除用户等等。谢谢你…你打算如何在没有会话的情况下跟踪你的用户?我想,您可以通过cookies传递所有数据,或者通过每个链接传递用户id和令牌。。。然后点击您的数据库来验证令牌。。。。。而且。。。阿克克。关键是,如果没有这些方法,实现一个安全的身份验证系统是非常困难的。人们使用它们是有原因的!!它们使它变得更简单,而不是相反!我的意思是使用$_SESSION变量来存储会话数据,没有SESSION_register(),因为它在PHP5中被register_globals=off禁用。但是我如何在POST中使用它呢?因为数据没有在表单中更改。用户只需单击一个删除链接即可。@ggfan如果“删除”只是一个链接,请让该链接指向一个页面,在该页面上,用户必须提交(通过POST)确认是否要删除某些内容。无论如何,这是一个好的步骤。或者使用漂亮的图像而不是文本链接(图像可以是提交按钮、提交隐藏字段)。或者在单击链接时使用某种JavaScript发布数据。@Tim。但是如果说remove.php?posting_id=5会将他们带到确认页面,他们必须单击submit。但是这和没有提交按钮有什么不同呢?因为如果有人想黑客,他们就不能点击提交吗?我很困惑x]@ggfan,CSRF(跨站点请求伪造)发生在第三方站点“欺骗”浏览器发出GET请求时。但是,如果该请求发送到确认页面(需要发布),则无法欺骗浏览器代表用户单击“提交”。@Tim:Darn。我以前听说过这些图像技巧,但我认为“检查是否登录”的事情会解决这个问题。。。我想不是。我想推荐人的支票也不可靠。。。您仍然可以在URL中使用某种会话密钥,但是标准保证no?GET是幂等的,并且您的用例显然违反了这一点(如果您将其标记为已删除而不是实际删除,则可以避免此问题,尽管会触发副作用)