Использование Access для хранения имен пользователей и паролей и открытие через Visual Basic - PullRequest
2 голосов
/ 01 сентября 2011

В основном я пытаюсь создать программу, которая должна иметь некоторую авторизацию.

Когда приложение запускается, оно запускается прямо на экране входа в систему.

Я хочу, чтобы текстовые поля «Имя пользователя» и «Пароль» читали базу данных и, если они совпадают, переходят к следующей форме, но если они не совпадают, появляется окно сообщения.

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

Также я хочу, чтобы поле пароля было * вместо видимого текста.

Может ли кто-нибудь помочь, это мой код пока ...

dbProvider = "PROVIDER = Microsoft.Jet.OLEDB.4.0;" dbSource = "Источник данных = D: /Users.mdb"

    con.ConnectionString = dbProvider & dbSource

    con.Open()


    sql = "SELECT * FROM tblUsers"
    da = New OleDb.OleDbDataAdapter(sql, con)
    da.Fill(ds, "Users")

    con.Close()

    MaxRows = ds.Tables("Users").Rows.Count
    inc = -1


    If UserIDTextBox.Text = ds.Tables("tblUsers").Rows(0).Item("UserID") & User_PasswordTextBox.Text = ds.Tables("tblUsers").Rows(0).Item("Password") Then
        MsgBox("This have worked correctly!")
    Else
        MsgBox("This has not worked, try again!")
    End If

Ответы [ 3 ]

3 голосов
/ 01 сентября 2011

Первое и самое важное, что вам нужно знать, это то, что почти всегда плохая идея кодировать свою собственную систему аутентификации.Это так просто сделать так, чтобы показалось правильным и даже прошло все ваши тесты, но при этом все еще есть тонкие, трудно выявляемые ошибки, которые не появятся до года спустя, когда вы узнаетеВы были взломаны шесть месяцев назад.Всегда полагайтесь как можно больше на те функции аутентификации, которые вам доступны на вашей платформе.

Следующее, что вам нужно знать, это то, что вы не храните пароли в базе данных.Когда-либо.Правильный способ обработки сопоставления паролей состоит в том, чтобы использовать соль для простого изменения исходного пароля, чтобы простые парольные словари теперь больше не приводили к значениям, которые можно легко перевернуть с помощью поиска в Google, а затем используйте криптографическое хеширование.алгоритм, такой как bcrypt, scrypt или (если вам действительно нужно) sha1.Не используйте MD5.Примеры этого легко доступны на Google, и объяснят это намного лучше, чем я могу здесь.Когда кто-то хочет войти в систему, вы выполняете те же шаги для его попытки пароля и теперь сравниваете только хэши.Если вы делаете это не так, то только пароли вашего пользователя станут общедоступными.

Далее я заметил проблему с обработкой вашего соединения с базой данных в вашем коде.Код, который у вас есть, не гарантирует закрытие соединения.con.Close() должен всегда находиться в блоке Наконец, и для предпочтения мне нравится сокращение Using.

Наконец, ближе к концу вы пытаетесь использовать оператор конкатенации строк VB (&) как логический AND.К сожалению.Вместо этого вы хотите использовать оператор AndAlso.

0 голосов
/ 01 сентября 2011

Это выглядит как действительно хорошая страница, которая охватывает то, что вы пытаетесь выполнить.

Аутентификация с помощью форм ASP.NET 2.0 с использованием базы данных Access

0 голосов
/ 01 сентября 2011

Sam

Сначала я скажу, что сказал Джоэл, хэшируйте пароли. Вот ссылка: Какой самый простой способ зашифровать пароль при его сохранении в реестре?

Что касается TextBox, просто установите для свойства PasswordChar что-то вроде *, и оно будет маскировать символы. Вы также можете ограничить длину.

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

def IsMemberOfAdGroup(grouName as string):
    windID = System.Security.PrincipalWindowsIdentity.GetCurrent()
    return System.Security.PrincipalWindowsPrincipal(windID).IsInRole(grouName)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...