【问题标题】:DataTables Hide Data SourceDataTables 隐藏数据源
【发布时间】:2021-12-19 01:49:55
【问题描述】:

我有一个加载数据的 DataTables 表

$table.dataTable({
    ajax: 'path/to/getData.php',
});

getData.php 进行一些数据库调用并返回输出数组的json_encode(),DataTables 能够很好地解析它。

但是,如果有人要去http://mywebsite.com/path/to/getData.php,他们将能够看到所有原始 JSON 数据并可能将其抓取。

有没有办法阻止人们访问getData.php,除非它被 dataTables 调用?

我相当肯定这必须是对 PHP 代码的修改,因为任何人都可能通过 Javascript 看到我的解决方法。

【问题讨论】:

  • 您可以通过使用 HTML 源数据来避免在网页中使用 Ajax。使用 PHP 构建 <html> 表的内容,并从 DataTable 定义中删除 ajax 选项。可能有几种不同的方法可以做到这一点 - 但here is one。另见HTML (DOM) sourced data。最终用户一次只能访问一页数据 - 并且需要从 HTML 中抓取数据,而不是从 JSON 响应中获取所有数据。
  • 我最初是这样做的,但我有大约 5000 行,并且 DataTables 需要一些时间来处理所有内容。进行 ajax 调用要快得多。
  • 我喜欢你的解决方案。附带说明一下,如果您在问题中告诉我们您已经尝试过什么,这会有所帮助 - 我们不会建议您已经知道不合适的东西。

标签: php jquery security datatables


【解决方案1】:

我最终使用了$_SESSION 变量。

在包含表格的页面的开头,我设置了$_SESSION['secure'] = true;

在我的getData.php 文件中,我有:

if($_SESSION['secure']) {
    echo json_encode($output);
    $_SESSION['secure'] = false;
}

重置secure 会话变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 2019-05-21
    • 2021-01-06
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    相关资源
    最近更新 更多