Мне нужна помощь по SQL-инъекции.Я читал об этом, но все еще не понимаю, как защитить себя от этого.
У меня есть простая база данных Access с таблицей («курсом»), содержащей имена и даты, среди прочего.Затем у меня есть старая страница ASP с формой поиска.Ниже формы поиска у меня есть div («схема»), который я хочу заполнить результатами поиска через AJAX.Все работает нормально, но есть ли что-то, что мне нужно сделать, чтобы защитить меня от SQL-инъекции?Вот упрощенная версия моего кода:
Страница поиска ASP с AJAX и формой (index.asp)
$("#search").keyup(function() {
var varSearch;
varSearch = $("#search").attr("value").replace(/\s/g,"+");
$("#schema").load('ajax.asp?q=' + varSearch + '');
});
<input type="text" name="search" id="search" value="Search.." />
<div id=”schema”></div>
Страница результатов ASP (ajax.asp):
q = request.querystring("q")
SQL = "SELECT * FROM course WHERE startDate >= #" & Now & "# AND (courseName like '%" & q & "%');"
While Not dbRS.EOF
str courseName = dbRS("courseName ")
Respone.Write courseName
dbRS.MoveNext
Wend
Любая помощь будет высоко ценится.Спасибо.
Обновление:
Вот что у меня так далеко.Это вся страница.Я не вижу, чего не хватает.Нужно ли что-то делать с базой данных Access, или она работает сразу?
<!--#include file="includes/adovbs.inc" -->
<%
q = request.querystring("q")
SQL = "SELECT * FROM info WHERE (cNamn Like '%?%');"
Set cn = Server.CreateObject("ADODB.Connection")
set comm = CreateObject("ADODB.Command")
set parameter1 = CreateObject("ADODB.Parameter")
cn.Open ("db.mdb")
Set cn.ActiveConnection = cn
parameter1.Type=adVarChar 'for example
parameter1.Size=25 'for example
parameter1.Direction=adParamInput
parameter1.Value=q
comm.Parameters.Append parameter1
Set recordset = comm.Execute
recordset.Close
cn.Close
Set recordset= Nothing
Set comm = Nothing
Set cn = Nothing
%>
Ошибка, которую я получаю прямо сейчас: «[Microsoft] [ODBC Driver Manager] Имя источника данных не найдено, и нетдрайвер по умолчанию указан "на линии" cn.Open ("db.mdb") ".Я пытался с "cn.Open server.mappath (" db.mdb ")", но затем я получаю ошибку "[Microsoft] [ODBC Driver Manager] Слишком длинное имя источника данных"