사용자 암호를 ecnrypt하기 위해 md5를 사용하고 있습니다. 그러나 모든 레코드를 추가하려고 할 때마다 내 코드에서 "INSERT INTO 문에 구문 오류가 있습니다."라는 오류가 발생합니다.ecrypted 문자열을 사용할 때 SQL 삽입 메서드가 실패합니다.
여기에 당신은 높은 수준의 문제가 내 코드
public int InsertUser(string lastName, string firstName, string username, string password, bool isAdmin)
{
OleDbConnection conn = new OleDbConnection(connStr);
conn.Open();
string encryptPassword = encryptMD5(username,password).ToString();
OleDbCommand dCmd = new OleDbCommand("INSERT INTO Users (LastName, FirstName, UserName, Password) " +
"VALUES ('" + lastName + "','" + firstName + "','" + username + "','" + encryptPassword + "')", conn);
dCmd.CommandType = CommandType.Text;
try
{
return dCmd.ExecuteNonQuery();
}
catch
{
throw;
}
finally
{
dCmd.Dispose();
conn.Close();
conn.Dispose();
}
}
private string encryptMD5(string username, string sPassword)
{
System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(sPassword + username);
bs = x.ComputeHash(bs);
System.Text.StringBuilder s = new System.Text.StringBuilder();
foreach (byte b in bs)
{
s.Append(b.ToString("x2").ToLower());
}
return s.ToString();
}
MD5를 쿼리 차단기 *로 가리키지 않습니다. MD5는 숫자와 문자 ('[0-9a-fA-F]')로 구성되며 아포스트로피로 묶습니다. –
예, 이해합니다. 그러나 쿼리가 어떻게 든 부러졌으며 이해해야한다는 것을 이해해야합니다. 연결하는 동안 끊어집니다. iincorrect first name, last name 및 username은 쉽게 깨질 수 있습니다. 뿐만 아니라 SQL 주입을 구현합니다. –
MD5 주석에 동의하고이를 다시 썼습니다. 나는 현재 코드에서 MD5가 특히 s.Append (b.ToString ("x2"). ToLower()) 이후에 아무 것도 해독하지 못한다고 상상할 수 없다. –