首页 > 解决方案 > 通过访问端点 URL 停止用户输入 AJAX 数据

问题描述

我有一个简单的表单,它将表单数据发送到 update.php,然后将数据插入到 MySQL 数据库中的表中。

$.ajax({
  url: '/actions/update.php',
  type: 'post',
  data: {
    name: 'name-data',
    description:'description-data'
  },
  success: function( data, textStatus, jQxhr ){
    console.log(data);
  },
  error: function( jqXhr, textStatus, errorThrown ){
    console.log(errorThrown);
  }
});

表格有效,数据完美地添加到数据库中。问题在于,理论上,如果用户知道数据发布到的 url(如果查看源代码,他们可能会知道),那么他们可以访问该 URL 并绕过表单添加记录。例如,访问/actions/update.php 将在数据库中添加一条空白记录。

是否可以阻止用户访问该文件/目录,同时仍允许将数据发布到该文件/目录?

标签: phpjqueryajax

解决方案


是否可以阻止用户访问该文件/目录,同时仍允许将数据发布到该文件/目录?

这是思考问题的错误方式。

如果客户端 JavaScript 可以发出该请求,那么用户可以向同一个 PHP 文件发出任何请求。

相反,在您的 PHP 中,您需要验证所传递的参数是否符合您可接受的定义。

例如,您可能需要检查nameanddescription参数是否在某个字符长度以下,或者当前登录的用户是否具有更新相关记录的权限。

仔细考虑什么是可接受的,什么是不可接受的。添加这些检查后,用户是否“访问 [s] 该 URL 并绕过表单添加记录”就无关紧要了。


推荐阅读