Как скрыть пароли пользователей в базе данных SQL Server - PullRequest
2 голосов
/ 18 ноября 2011

Для повышения безопасности моих пользователей я хочу скрыть все пароли пользователей в моей базе данных MSSQL.Веб-приложение на ASP Classic, а поле SQL - varchar (max).

Я слышал о хешировании кодов, но как это работает?Это нужно сделать в строке SQL или сделать функцию ASP?

Мои текущие настройки пользователей:

id    username    password
1     jersey      plaintextpassword
2     timber      plaintextpassword
....

Ответы [ 4 ]

4 голосов
/ 18 ноября 2011

Я предпочитаю хранить пароль пользователя как с md5

сохранить пароли после md5sum когда пользователь пытается войти

пользовательские переменные из формы

var_username = jersey
var_password = 123456

// dont forget to escape for sql injection
// generate md5sum for password
var_md5password = md5(password)

SELECT * FROM users WHERE username = 'var_username' AND password = 'var_md5password'

например

|- id -|- username -|- password -|
|-  1 -|- jersey   -|- 123456   -|
|-  2 -|- timber   -|- 1234567  -|

стол с md5

|- id -|- username -|-             password             -|
|-  1 -|- jersey   -|- e10adc3949ba59abbe56e057f20f883e -|
|-  2 -|- timber   -|- fcea920f7412b5da7be0cf42b8c93759 -|

более безопасный способ

 secret_key = topsecretkey
 password: 123456
 md5(password+secretkey)
 it will generate a better md5
1 голос
/ 18 ноября 2011

На самом деле я только что нашел бесплатный ASP-скрипт, реализующий алгоритм одностороннего шифрования SHA-256, который является одним из стандартных методов генерации цифровых подписей.

Он также содержит форму и ASP-код, демонстрирующий использование алгоритма. Алгоритм SHA-256 является одним из стандартных отраслевых методов генерации цифровых подписей. Обычно он называется дайджестом, цифровой подписью, односторонним шифрованием, алгоритмом хеширования или контрольной суммы. Обычно SHA-256 используется для шифрования паролей, поскольку оно одностороннее, что не означает, что ваши пароли не свободны от атаки по словарю.

Я не знаю, является ли это более безопасным, чем MD5, но вот оно:

http://www.freevbcode.com/ShowCode.asp?ID=2565

0 голосов
/ 18 ноября 2011

Обычно это функция ASP на стороне сервера.

Когда пользователь создается или его пароль обновляется, вы передаете простой текстовый пароль функции, которая создаст односторонний хэш пароля. Обычно достаточно MD5 или аналогичного, но в зависимости от требуемой безопасности вы можете выбрать более сложные алгоритмы шифрования. Хешированный пароль затем отправляется в базу данных для хранения в зашифрованном формате.

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

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

0 голосов
/ 18 ноября 2011

Вот метод, который преобразует данное строковое значение (пароль) в хеш-строку.Это код C #, поэтому он будет работать с Dot net.

    public static string HashString(string value, string salt)
    {
        value = salt + value;
        HashAlgorithm myHasher = new SHA1CryptoServiceProvider();
        byte[] myHashInBytes = myHasher.ComputeHash(System.Text.Encoding.Default.GetBytes(value));
        return Convert.ToBase64String(myHashInBytes);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...