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 Provider forSQLServerエラー「80040e14」

キーワード「user」の近くの構文が正しくありません。

create_account.asp、18行目

すべてをチェックしました。フィールド名が存在し、テーブル名も正しいです。

助言がありますか?

4

3 に答える 3

3

ユーザーはSQLサーバーの予約語です。[user]のように角かっこで囲みます。

于 2008-12-10T20:36:13.750 に答える
1

これはSQLインジェクションに対して脆弱です。誰かがこれを姓に入れたらどうなるか想像してみてください。

');DROP Table [user];--

それを修正するか、私が個人的にあなたを追跡し、あなたがそうするまで濡れた麺であなたを殴ります。

于 2008-12-10T21:08:43.607 に答える
0

次のように変更してみてください。

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

(テーブル名は予約語なのでエスケープします)

また、このコードは SQL インジェクション攻撃を受ける可能性があるため、キーボード入力を検証することを忘れないでください。

于 2008-12-10T20:38:14.463 に答える