MyI는 데이터에서 정보를 수집해야하는 양식을 작성했습니다. 이 데이터는 "등등을 포함하여 임의의 문자가 포함될 수 있습니다. 내 질문에 어떻게 SQL 삽입 공격을하지 않고 데이터를 안전하게 삽입 할 수 있습니다."/ "와 같은 문자가있을 때마다이 양식에서 오류가 발생하지 않도록 이스케이프 문자를 삽입 할 수있는 위치 등등이 삽입됩니다. SQL 인젝션 보호를 위해SQL 테이블에 데이터를 안전하게 삽입하고 SQL 삽입 오류를 방지하십시오.
public string InsertRecordSet()
{
source = new FileInfo(@"c:\scripts\db_connection.txt");
stream = source.OpenText();
String text = stream.ReadLine();
stream.Close();
String uid = text.Substring(0, text.IndexOf(":"));
String pw = text.Substring(text.IndexOf(":") + 1, (text.Length - uid.Length - 1));
String connectionString = "dsn=" + "db" + "; uid=" + uid + "; pwd=" + pw + ";";
String statement = "INSERT INTO table (SubmitDate, FirstName, LastName, Email, Phone, Major, Description, HearAbout) VALUES (@SubmitDate, @FirstName, @LastName, @Email, @Phone, @Major, @Description, @HearAbout)";
conn = new OdbcConnection(connectionString);
command = new OdbcCommand(statement, conn);
command.Parameters.AddWithValue("@SubmitDate", DateTime.Now);
command.Parameters.AddWithValue("@FirstName", txtFname.Text);
command.Parameters.AddWithValue("@LastName", txtLname.Text);
command.Parameters.AddWithValue("@Email", txtEmail.Text);
command.Parameters.AddWithValue("@Phone", txtPhone.Text);
command.Parameters.AddWithValue("@Major", txtMajor.Text);
command.Parameters.AddWithValue("@Desciption", txtDescription.Text);
command.Parameters.AddWithValue("@HearAbout", txtMaxwell.Text);
conn.Open();
try
{
command.ExecuteNonQuery();
return "true";
}
catch (OdbcException oe)
{
_dbError = true;
Session.Contents.Add("USIFormException", oe);
return (oe.ToString());
}
finally
{
conn.Close();
}
}
음을 그 사용자는 "추천"등이 데이터베이스 오류 발생에 대한 값을 입력 할 때마다. 어떤 아이디어 이스케이프 문자를 추가하는 방법 또는 오류가 발생하지 않도록하려면 – Paradigm
내가 그 일을했을 때 어떤 이유로이 오류가 발생합니다. 오류 [42000] [Microsoft] [ODBC SQL Server 드라이버] [SQL Server] 변수를 선언해야합니다. '@SubmitDate'. – Paradigm
명령 개체가 구문 분석하지 않습니다. 무효 SQL에 대한 내용. 매개 변수는 개별적으로 전달되므로 SQL & '을 포함 할 수 있지만 분석되지 않으므로 문제가되지 않습니다. –