2012-12-27 88 views
0

我的应用程序调用外部PHP文件来检索信息并将其提交给SQL数据库。每个请求都可以在我认为是任何浏览器的开发人员面板中看到,并且可以轻松地手动重新执行。这是我的理解that trying to detect the "source" of the request is not the right way to go about restricting manual invocation of scripts防止多次手动执行外部PHP脚本

我想要阻止这些脚本重新执行的主要原因是,它们可能会导致用户给自己比他们赚得更多(UPDATE user_scores SET score = score + x)或将自己返回到以前的状态多次,因为他们想要(UPDATE user_scores SET score = x)。

什么是确保只在一次执行的脚本中进行查询的经过验证的真正方法是在第一次执行而不再执行?

+0

第一次后没有查询可用?通常这是一组标志。一旦你检测到这个标志为活动状态,你想在之后不做任何事情:) – Xnoise

+0

也许是随机数? http://stackoverflow.com/questions/4145531/how-to-create-and-use-nonces – mtrbean

回答

1

你应该从来没有依赖于这样的客户端控件。你的PHP脚本应该检查用户是谁,并在做之前验证他们应该“得到”他们得到的任何东西。

你正在运行的那个代码,首先计算得分应该是你的UPDATE代码是......它永远不会离开服务器。