Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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
Php 如何验证和验证网站上的操作?_Php_Jquery_Ajax_Validation - Fatal编程技术网

Php 如何验证和验证网站上的操作?

Php 如何验证和验证网站上的操作?,php,jquery,ajax,validation,Php,Jquery,Ajax,Validation,我有一个网站,上面有一个按钮。当按下该按钮时,我使用jquery和ajax向数据库中的一行添加+1。更具体地说,ajax的操作是一个.php文件,我在该文件上发送我想要+1的数据库行的id。 如果一个对web开发稍有了解的人查看我的源代码,看到我在按下按钮时处理ajax,他可以复制该url并刷新页面100次,并将+100添加到该行 我怎样才能防止这种情况?只有当用户按下该按钮时,如何才能使该.php文件执行代码?您永远无法100%阻止它。但对于这个问题,有一些常见的做法。 是否使用Ajax并不重

我有一个网站,上面有一个按钮。当按下该按钮时,我使用jquery和ajax向数据库中的一行添加+1。更具体地说,ajax的操作是一个.php文件,我在该文件上发送我想要+1的数据库行的id。 如果一个对web开发稍有了解的人查看我的源代码,看到我在按下按钮时处理ajax,他可以复制该url并刷新页面100次,并将+100添加到该行


我怎样才能防止这种情况?只有当用户按下该按钮时,如何才能使该.php文件执行代码?

您永远无法100%阻止它。但对于这个问题,有一些常见的做法。 是否使用Ajax并不重要

  • 会话cookie->如果用户第一次单击该按钮,则设置会话值。如果会话值存在,则不再计算。问题:用户可以清除浏览器缓存,以便获得新的会话id
  • 保存用户的IP,每个IP只允许一次。问题:用户可以重新启动路由器,因此他可以从提供商处获得新的IP。在公司网络中,每个用户都有相同的IP,你会遇到问题
  • 问题:它很糟糕,有办法移除这些cookies

  • 这些问题的一般解决方案是用php编写操作代码,而不是客户端(js)。请显示您的代码。在遭受SQL注入攻击时,您可能会遇到更大的问题。@JonathanM其中有什么让您认为存在SQL注入?如果您向我们展示如何激活add+1函数,这可能很容易解决。是否允许用户多次单击?还是只有一次?因为它可以像存储在会话
    userClicked=1
    中一样简单,如果
    userClicked==1
    您就可以拒绝任何进一步的单击。出于这些原因,我认为唯一的方法是使用经过身份验证的用户,用户名可以用来防止多次单击。@Letizia肯定是的。这将是100%阻止它的唯一选择。