Могу ли я использовать Environment.Username и MYSQL для подтверждения входа? - PullRequest
0 голосов
/ 01 апреля 2020
        private void btnSubmitt_Click(object sender, RoutedEventArgs e)
        {
        try
        {
            i = 0;
            MySqlCommand cmd = con.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "Select * from users where  TX_EMPLOYEE='"; (Environment.UserName) & "'";
            DataTable dt = new DataTable();
            MySqlDataAdapter da = new MySqlDataAdapter(cmd);
            da.Fill(dt);

            i = Convert.ToInt32(dt.Rows.Count.ToString());
        }
        catch
        {
            MessageBox.Show("Database connection is not available at this time. Please contact your database administrator ");
        }
        finally
        {
            con.Close();
        }

Я хотел бы аутентифицировать пользователя по имени входа в компьютер и точному совпадению, указанному в таблице данных MYSQL. Однако Environment.Username не является допустимым синтаксисом в этом операторе SQL.

1 Ответ

3 голосов
/ 01 апреля 2020

Эта строка очень очень неправильная:

cmd.CommandText = "Select * from users where  TX_EMPLOYEE='"; (Environment.UserName) & "'";

Это должно быть так:

cmd.CommandText = "Select * from users where  TX_EMPLOYEE='" + Environment.UserName + "'";

За исключением того, что это не должно быть так из-за инъекции SQL. Если бы я мог превратить Environment.UserName в ' or 1 = 1 or TX_EMPLOYEE = ', тогда ваш последний запрос стал бы таким:

Select * from users where  TX_EMPLOYEE='' or 1 = 1 or TX_EMPLOYEE = ''

Что явно не то, что вам нужно - кто-то, у кого нет доступа к данным. Вместо этого вы должны использовать SQL параметры:

cmd.CommandText = "Select * from users where  TX_EMPLOYEE=?userName";
cmd.Parameters.AddWithValue("?userName", Environment.UserName);

В отдельном примечании я смущен этим кодом:

i = Convert.ToInt32(dt.Rows.Count.ToString());

DataTable.Rows.Count уже int, поэтому вы конвертируете число в строку в число. Почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...