php - 阻止用户通过访问端点 URL 输入 AJAX 数据

标签 php jquery 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 将会向数据库添加一条空白记录。

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

最佳答案

Is there away to block users to that file/directory while still allowing data to be posted to it?

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

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

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

例如,您可能需要检查namedescription参数是否低于特定字符长度,或者当前登录的用户是否有权更新相关记录。

仔细思考什么是可以接受的,什么是不可以接受的。添加这些检查后,用户是否“访问该 URL 并绕过表单添加记录”就不再重要了。

关于php - 阻止用户通过访问端点 URL 输入 AJAX 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52238111/

相关文章:

javascript - 类似 jQuery 库的模式

javascript - Ajax 呈现的按钮未触发单击事件

javascript - .load() 在检索内容时是否保留内联 JavaScript?

php - 将时间/日期从 XML 文件转换为 MYSQL 格式

javascript - 使用 Ajax、JavaScript 和 HTML 发布一些数据

javascript - 例如,页面上的引用可接受的模式是什么?

javascript - 如何将下一个输入字段集中在按键上

php - 为什么 AJAX 不向我的 PHP 页面发送数据?

php - mod_rewrite 添加尾部斜杠

php - WooCommerce 订阅取消电子邮件给客户