diablo22 Ответов: 2

Vb.net МС зарегистрироваться для доступа


Привет
У меня возникла проблема с регистрацией в базе данных ms access.
Ошибка, которую я имею, - это "синтаксическая ошибка в операторе INSERT INTO"
я проверил код, но не могу понять, в чем проблема.


Имена столбцов указаны правильно. Подключение к файлу базы данных тоже нормально. Где я делаю ошибку?
Спасибо

Что я уже пробовал:

<pre>Public Sub RegisterUser()
        Try
            With cmd
                .Connection = conn
                .CommandText = "INSERT INTO Users (user,pass,admin) VALUES (@user,@pass,0)"
                .Parameters.AddWithValue("@user", Login.txtUsername.Text)
                .Parameters.AddWithValue("@pass", Login.txtPassword.Text)
                .ExecuteNonQuery()
                Result = .ExecuteNonQuery
                .Parameters.Clear()
            End With
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            If Result > 0 Then
                MessageBox.Show("Sign Up Successful", "Warehouse Tool", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Login.txtUsername.Text = ""
                Login.txtPassword.Text = ""
                Login.txtUsername.Focus()
            Else
                MessageBox.Show("Failed to register user!", "Warehouse Tool", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                Login.txtUsername.Text = ""
                Login.txtPassword.Text = ""
                Login.txtUsername.Focus()
            End If
            cmd.Dispose()
            If conn IsNot Nothing Then
                conn.Close()
            End If
        End Try
    End Sub

2 Ответов

Рейтинг:
15

OriginalGriff

"Пользователь" - это зарезервированное слово доступа, и вы не должны использовать его в качестве имени столбца. Если вы это сделаете, вы должны избежать имени:

INSERT INTO Users (`user`, pass, admin) ...


Но... у вас есть более серьезная проблема: никогда не храните пароли в открытом тексте - это серьезная угроза безопасности. Здесь есть некоторая информация о том, как это сделать: Хранение паролей: как это сделать.[^]

И помните: если это веб-сайт и у вас есть какие-либо пользователи из Европейского союза, то применяется GDPR, а это означает, что вы должны обрабатывать пароли как конфиденциальные данные и хранить их безопасным и безопасным способом. Текст-это ни то, ни другое, и штрафы могут быть ... ГМ ... выдающийся. В декабре 2018 года немецкая компания получила относительно низкий штраф в размере 20 000 евро именно за это.


diablo22

Вы были правы, я полностью забыл о "зарезервированном имени" спасибо Вам большое, Также я сею еще одну проблему, которую я выполняю в 2 раза больше кода, так что я исправляю это тоже сейчас.
Насчет защиты паролем я так и не понял из ссылки, как это сделать.

Если бы вы могли лучше объяснить мне, как это сделать, я бы оценил это. Спасибо.

OriginalGriff

Перейдите по ссылке и прочитайте ее: она включает в себя код, и это почти так же просто, как это может быть, если только я не приду и не наберу его для вас ...

Рейтинг:
0

diablo22

Public Shared Function EncryptPassword(password As String) As String
        'Simple Encryption
        'Dim PasswordBytes As Byte() = System.Text.Encoding.UTF8.GetBytes(password)
        'Dim EncryptedPassword As String = Convert.ToBase64String(PasswordBytes)
        'Return EncryptedPassword

        'SHA1 Encryption
        Dim sha1 As New SHA1CryptoServiceProvider()
        Dim PasswordBytes As Byte() = System.Text.Encoding.UTF8.GetBytes(password)
        Dim EncryptedPassword As String = System.Text.Encoding.UTF8.GetString(sha1.ComputeHash(PasswordBytes))
        Return EncryptedPassword

        'MD5 Encryption
        'Dim md5 As New MD5CryptoServiceProvider
        'Dim PasswordBytes As Byte() = System.Text.Encoding.UTF8.GetBytes(password)
        'Dim EncryptedPassword As String = System.Text.Encoding.UTF8.GetString(md5.ComputeHash(PasswordBytes))
        'Return EncryptedPassword

    End Function


Richard MacCutchan

Это не шифрование, это хэширование; вы должны изменить имя метода.

diablo22

я нашел и использовал его с небольшими редактировать Анад 3-х вариантов пароля защищена в базе данных, так что если кому-то понадобится, он может проверить его слишком thats, почему я оставить его.