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

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

<%@ 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 Provider for SQL Server error '80040e14'

Incorrect syntax near the keyword 'user'.

create_account.asp, line 18

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

Какие-либо предложения?

Ваш код завален SQL-инъекциями, подумайте, что происходит, когда я ввожу свое имя как: '; Пользователь DROP TABLE;

TravisO 10.12.2008 23:38

TravisO - Если я проверю свой код даже на стороне клиента и на стороне сервера?

Coughlin 10.12.2008 23:43

... такой код, который вызывает кошмары администратора БД.

Joel Coehoorn 11.12.2008 00:21
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
9 254
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

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

Coughlin 12.12.2008 01:18

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

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

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

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

Это уязвимо для SQL-инъекции. Представьте, что случится, если кто-то подставит вместо фамилии такую:

');DROP Table [user];--

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

+1 за взбивание влажной лапши; Хорошее замечание и об инъекции :)

seanb 11.12.2008 00:31

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

Coughlin 12.12.2008 01:18

Другие вопросы по теме