我正在尝试对 oledb 连接进行 SQL 注入,当我输入
value #
. 时出现语法错误
我不明白为什么会这样,因为这样做:
value' or '1'='1
正在工作。
OleDbConnection Con = new OleDbConnection();
Con.ConnectionString = @"provider=microsoft.ACE.oledb.12.0;data source=" + Server.MapPath("") + "\\database.accdb";
Con.Open();
string sqlstring = "select * from users WHERE myusername = '"+InputUserName.Text+"' AND mypassword ='"+InputPassWord.Text+"'";
OleDbCommand Cmd = new OleDbCommand(sqlstring, Con);
OleDbDataReader dr1 = Cmd.ExecuteReader();
if (dr1.HasRows)
{
dr1.Read();
Response.Redirect("connectionSuccesful.aspx");
}
else
Label1.Text = "not valid username or password";
我也试过:
string sqlstring = $"select * from sellers WHERE Myusername = '{InputUserName.Text}' -- AND Mypassword ='{InputPassWord.Text}'";
但它又给我语法错误。我正在使用 Microsoft 访问数据库并使用 oledb 阅读器。
根据这个SQL#符号是什么意思,怎么用?,
#
符号是用来给临时表加前缀的。它不用于注释 SQL 表达式的其余部分,您应该在注释该行的其余部分时尝试--
。
编辑:
#
仅用作 MySQL 中的注释(再次根据上面的 StackOverflow 问题)
编辑 2:根据以下问题如何在 Microsoft Access 中注释掉 SQL 代码?您不能在 Microsoft Access 数据库中进行注释,这就是您出现语法错误的原因。