【问题标题】:Tabulator does not execute script in ajax-load cell dataTabulator 不在 ajax-load 单元格数据中执行脚本
【发布时间】:2023-02-21 20:35:40
【问题描述】:

不确定这是错误还是无知。

我有一个 Tabluator 表从 ajax 加载数据:

    productsTable = new Tabulator("#productsTable", {
      height:"100%",
      layout:"fitColumns",
      ajaxURL: dataSource,
      columns: [
        {title: "Orders",     field: "orders_test_col", formatter: "html", headerSort: false, headerHozAlign: "center", hozAlign: "center", headerSort:false, width: "25%"},
      ]
    });

我返回的数据如下所示:

{
    "data": [
        {
            "itemId": 2896652,
            "orders_test_col": "\u003cscript\u003econsole.log('orders_test_col: 2896652')\u003c/script\u003e",
        }
    ]
}

本质上是<script>console.log('orders_test_col: 4097380')</script>

加载数据后如何运行此脚本?在 Tabulator docs 中,他们明确地谈论了 beware of script injection 所以我假设(d)它应该运行该数据。

【问题讨论】:

    标签: javascript tabulator


    【解决方案1】:

    你应该绝不包含/执行包含在 ajax 数据中的脚本,这是非常糟糕的做法,而且主要是不安全的。

    您应该重组代码,以便在浏览器端代码中定义控制台日志,并将消息的内容存储在表数据中。

    然后你可以在 data-loaded 事件上触发控制台日志

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多