繁体   English   中英

使用ASP和INSERT INTO-

[英]Using ASP and 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提供程序的SQL Server错误'80040e14'

关键字“ user”附近的语法不正确。

create_account.asp,第18行

我已经检查了所有内容,字段名存在并且表名也正确。

有什么建议么?

用户是SQL Server中的保留字。 将其放在方括号中,例如[user]

这容易受到SQL注入的攻击。 想象一下,如果有人将其放在姓氏中会发生什么:

');DROP Table [user];--

修复它,否则我将亲自跟踪您,并用湿面打败您,直到您这样做为止。

尝试将其更改为:

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

(转义表名,因为它是保留字)

另外,不要忘记验证键盘输入,因为此代码容易受到SQL注入攻击。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM