【问题标题】:What is the more efficient method for using API data?使用 API 数据更有效的方法是什么?
【发布时间】:2018-10-20 03:03:21
【问题描述】:

我正在使用 SQL 从数据库中提取 API 数据并使用 javascript 构建 DOM 元素。我想知道这样做是否更快:

  1. 使用广泛查询,对数据进行排序并用js构建页面

    format=json&q=SELECT * FROM table
    
  2. 使用特定的查询,不必进行太多排序,然后用 js 构建页面。

    format=json&q=SELECT * FROM table WHERE date >= '23/03/2018'
    

任何见解都会有所帮助,谢谢!

【问题讨论】:

    标签: javascript sql database sql-injection


    【解决方案1】:

    MySQL 执行查询所需的时间差异几乎没有影响(取决于数据库的大小)。但是,考虑到 Javascript 是根据结果构建元素,最好将数据分类为尽可能少的数量以保持速度。

    顺便问一下,您是从客户端代码执行 SQL 命令吗?请务必发布您的整个代码,因为我无法准确理解您在做什么,但如果您正在执行用户对?q= 参数的输入,那么您的代码非常危险并且容易受到SQL Injection 的攻击。

    我建议您在服务器端执行此操作,使用诸如 PHP 之类的语言,它将在服务器端执行它,因此不存在与 Javascript 构建 DOM 元素的速度相关的现有担忧,并且不存在提到 PHP 是一种服务器端语言,因此可以验证和保护输入以删除任何恶意内容。请记住,即使您确实使用 Javascript 进行了验证,用户也很容易覆盖代码,因为它将在客户端(在用户可以访问的用户自己的计算机上)进行验证。

    【讨论】:

    • 好吧,我也是这么想的;一般而言,更少的数据处理至少等于更快的 js。我正在使用在特定页面上运行 js 文件的 PHP。如果 page = example { run example.js },example.js 将调用、排序和显示数据。
    • 听起来比您的 OP 建议的设置要好一些。如果您想在这里或私下发布一些 PHP/JS 代码,我可以让您知道是否有任何明显不安全/不好的做法。
    • 使用WordPress;我可以将 API 密钥或整个 SQL 查询存储在更安全的位置吗?而不是页面脚本(在这种情况下,example.js 的 URL:api.website/api/v2/query/… * FROM \"daily log\" WHERE date >= '" + dateSearchInput + "\'")
    • JS 不是问题。问题是您的 ?q= 参数正在接受原始 SQL 命令,这是一种糟糕的做法。尝试对 URL 的 GET 请求,例如:api.website/api/v2/query/… * FROM users(假设有一个包含用户的表,我刚刚转储了您的整个数据库并拥有所有用户的密码(加密与否)。如果查询像工作正常,我还可以删除所有表并破坏站点以及其他几个 SQL 注入。并且不要尝试使查询更小并将其限制为仅需要的内容,它可以被 esculate
    猜你喜欢
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多