脚本执行2x是Chrome + Firefox中的预期行为或错误吗?

时间:2018-10-26 16:57:34

标签: php mysql google-chrome firefox

编辑:该问题与以@mario标记的任何重复帖子无关

如果您也遇到这种情况,请查看comment答案中的这个@MonkeyZeus's


我有一个非常基本的PHP / MySQL脚本,该脚本将1行插入到数据库中。但是由于某种原因,我发现如果我想通过在Chrome / Firefox URL栏中键入URL来运行脚本,但是还没有完成,只需单击已访问的选项-我的脚本就会执行两次。

我正在使用Chrome的最新64位版本,内部版本:69.0.3497.100。

Firefox:62.0(64位)(好像已经在v63中修复了吗?)

这是预期的行为还是潜在的错误?如果不是错误,谁能解释为什么会这样吗?

编辑:

请重新打开问题,因为我的问题与重复的帖子无关,马里奥提到...

正确答案进入@MonkeyZeus

1 个答案:

答案 0 :(得分:1)

这里的关键是永远不要通过GET请求进行可能破坏操作的操作。总是始终通过POST进行操作,并使用令牌来保护它们免受CSRF的侵害。

在您不知情的情况下,有各种方法可以预先提取,预加载,抓取,镜像或以其他方式访问链接。翻译工具,书签的屏幕截图工具,笔记组织者应用程序以及其他工具将加载任何GET请求,而无需担心后果。

想象一下,如果您有一个删除某些内容的链接,我可以猜测该URL是什么。我可以向您发送带有图像标签的电子邮件,例如:

<img src="http://example.com/user/290/delete">

然后,该用户将被立即删除,无需确认。您甚至都不知道发生了什么。这就是为什么通过POST接受至关重要的原因。