【问题标题】:Posting data and pulling the result [closed]发布数据并提取结果[关闭]
【发布时间】:2020-03-16 11:06:38
【问题描述】:

我正在使用Jquery将数据推送到一个.asp页面,希望返回一些数据。

我尝试过发送正常的字符串数据,它工作正常。

jQuery:

          $.post("Ajax/DisplayQuery.asp", { SQLquery: $('#SQLstring').text() }, function (data1, status) { // Post query name to data page

            var str1 = data1;
            var res1 = str1.split(" | "); // Remove the pipe delimiter
            var workers1 = res1;

            alert("Columns: " + workers1);

       })

.ASP 页面

      on error resume next

    dim rs1
    Set rs1 = doSQL("request.form("SQLquery")")

    Dim fld As DAO.Field

   For Each fld In rs1.Fields
      response.Write " | " & fld.Name
   Next

   Set fld = Nothing

   if err.number > 0 then
       response.Write ("ERROR: " & err.Description)
   end if 

从我的 Jquery 中,我试图获得弹出警报,如果我通过发送纯字符串文本,弹出窗口会显示。

下面包含一个我实际通过的 SQL 查询

{ SQLquery: $('#SQLstring').text() }

【问题讨论】:

  • 这里有问题吗?问题描述是什么?除了似乎不是“问题”一部分的严重安全问题。
  • 感谢您的意见。 .text 表示未定义,.length 表示 .length 不是 的函数
  • 安全问题是您让客户端直接指定要执行的 SQL 查询,而没有任何类型的过滤。它只是要求被黑客入侵。
  • 就目前而言,任何用户都可以下拉控制台并输入$.ajax("Ajax/DisplayQuery.asp", { SQLquery: "select * from passwords"}) 或更恶意的内容,例如drop table passwords。当您运行任何传递的内容时,甚至不需要添加通常的 SQL 注入黑客。这个话题太大了,这里就不介绍了。
  • 500 (Internal Server Error) 表示服务器端代码崩溃,但没有给出根本原因。如果 ASP 配置为在响应中发送错误消息,您可以通过在网络工具中查看对 DisplayQuery.asp 的请求,单击请求将其打开,然后转到响应来查看错误的详细信息标签。 (如果 ASP 未配置为执行此操作,则可以考虑暂时以这种方式设置它,以便您可以看到错误。或者您可能已经能够在服务器上的事件查看器中看到它。)

标签: jquery ajax asp-classic


【解决方案1】:

@ADyson 建议我查看检查元素工具中的网络选项卡。这有助于识别代码中的 2 个问题。

语法问题,需要删除引号,留下以下内容:

doSQL(request.form("SQLquery"))

我还必须从这一行中删除 As DAO.Field:

Dim fld As DAO.Field

【讨论】:

  • 请记住,您的结构只是乞求让某人将“删除所有表”SQL 查询传递到您的站点。允许用户传入要运行的 SQL 查询是非常糟糕的安全性。
  • @StephenR 该页面在内部环境中使用,所以我们会没事的。尽管它引起了我的注意,我正在努力实施更好的安全性。关于从哪里开始寻找解决方案的任何建议?
  • 这是一个基本原则:“永远不要相信用户提供的数据”。这包括通过 POST 或 GET 提供的任何内容,因为这些内容很容易被伪造。这比我能发表的评论要多得多。但至少要使用参数化查询。我无法想象一种安全的方式让用户(或 Ajax)只传递在后端运行的整个查询。搜索“参数化查询”和“sql 注入”寻找好的起点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
  • 2018-12-10
  • 1970-01-01
相关资源
最近更新 更多