Использование ASP и INSERT INTO -

Asked
Viewd9049

0

Я пытаюсь создать простую страницу, которая вводит данные в базу данных, и мой код приведен ниже.

 <%@ LANGUAGE="VBSCRIPT" %>
<% Option Explicit %>
<!--#include FILE=dbcano.inc-->
<%

dim username,password,f_name,l_name,objConn,objs,query

username   = Request.Form("user")
password   = Request.Form("pass")
f_name     = Request.Form("fname")
l_name     = Request.Form("lname")

if((f_name <> null) or (f_name <> "")) then
    response.redirect("patti_account.asp")
else
    Set objConn = ConnectDB()
    query       = "INSERT INTO user (username,password,f_name,l_name) VALUES ('"& username &"','"& password &"','"& f_name &"','"& l_name &"')"
    Set objs    = objConn.Execute(query)

    Response.Redirect ("thankyou.asp")

end if

%>
 

Я получаю эту ошибку при запуске своей страницы:

Поставщик Microsoft OLE DB для SQL Ошибка сервера 80040e14

Неправильный синтаксис рядом с ключевым словом "пользователь".

create_account.asp, строка 18

Я проверил все, мои имена полей существуют, и имя моей таблицы также правильное.

Есть предложения?

3 ответов

3

Пользователь - зарезервированное слово в SQL-сервере. Поместите его в квадратные скобки, например [пользователь] .

  • Сработало как шарм! Спасибо, Мартин. Я даже не подумал проверить, было ли «пользователь» зарезервированным словом

    Coughlin11 декабря 2008, 22:18
1

Попробуйте изменить его на:

 query       = "INSERT INTO [user] (username,password,f_name,l_name) VALUES ('"& username &"','"& password &"','"& f_name &"','"& l_name &"')"
 

(избегайте имени таблицы, так как это зарезервированное слово)

Также не забывайте проверять ввод с клавиатуры, поскольку этот код подвержен атакам с помощью SQL-инъекций.

2

Это уязвимо для внедрения SQL. Представьте, что бы произошло, если бы кто-нибудь подставил вместо фамилии это:

 ');DROP Table [user];--
 

Исправьте это, или я лично выслежу вас и буду бить влажной лапшой, пока вы это не сделаете.

  • Спасибо, Джоэл! Я обязательно буду следить за этим ... еще раз спасибо.

    Райан

    Coughlin11 декабря 2008, 22:18
  • +1 за взбивание влажной лапши; Хорошее замечание и об инъекции :)

    seanb10 декабря 2008, 21:31