【发布时间】: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