2013-08-17 2 views
2

Итак, у меня есть в базе данных mysql.user пользователи, которые хранятся с использованием метода шифрования пароля (по умолчанию, из того, что я знаю), и моих пользователей database.users, у которых есть учетные данные пользователя и пароль (пароль зашифрован с помощью md5). Проблема в том, что я хочу зашифровать вставленные пароли (из формы) с помощью md5, когда пользователь сможет запросить базу данных.Запросить базу данных MySql с паролями md5

Эти регистрационные данные, как извлеченные из $ _POST метода формы и сделали их в качестве сессии для легкого использования на связи:

$_SESSION['utilizator']=$utilizator; //user 
$_SESSION['parola']=md5($parola); //password 

И это соединение DB входит в каждый файл, где мне нужно для запроса к базе данных:

$link = mysqli_connect('localhost', $_SESSION['utilizator'], $_SESSION['parola']); 
if(!$link){ 
    die('Unable to connect to the database: ' . mysqli_error($link)); 
} 

ответ

3

Старайтесь не использовать md5, потому что это не безопасно. Почему вы подключаетесь к базе данных с учетными данными пользователя? У вас должен быть пароль и пользователь, специфичные для этого, и использовать его везде, где вам нужно соединение с БД, и разрешать пользователю изменять БД только в том случае, если он передает ваш логин (что вы делаете небезопасно), другими словами, эти учетные данные пользователя предназначены только для БД и БД и известны только вам. После этого вы можете сохранить в материале, связанном с таблицей: pass и username зашифрованы, как вы хотите их, введите логин, который проверяет зашифрованный проход и пропуск DB, если это нормально, тогда выполните запросы.

EDIT:

Поскольку вы wnat хранить пропуск в куки или сессии этот метод поможет, так как вы можете просто хранить зашифрованный пароль и проверить, если он такой же, как тот, в вашей БД.

+0

Спасибо, не знал, что лучше использовать конкретного пользователя для подключения mysql. На мой взгляд, мне показалось, что лучше получить учетные данные пользователя для доступа к БД вместо того, чтобы поместить соединение mysql в текстовый файл в моем php-файле соединения db. – adi

+0

PHP просматривается только сервером, а тот, который пишет код: D, и в худшем случае - тот, кто взломан на вашем сервере, и в этом случае БД уже, скорее всего, скомпрометирована. – Krotz

1

MySQL не использует md5 для хранения пользовательских паролей (по крайней мере, по умолчанию). Он использует функцию MySQL PASSWORD(). Если вы используете пароль без его запуска через md5(), он должен работать.

$_SESSION['parola']=$parola; //password 
+0

Работает с тех пор, как я использовал его без md5, но проблема в том, что я хочу хранить файлы cookie для входа в систему, и я не могу хранить его как обычный текст в cookie. – adi

2

Я бы посоветовал вам обрезать ans, дезинфицируя имя пользователя и пароль, прежде чем хранить их в сеансе. Что касается mysqli_connect он принимает 4 аргумента

<?php $link = mysqli_connect("myhost","myuser","mypassword","mydatabase") or die("Error " .  mysqli_error($link));?> 

Посмотрите на примеры на странице PHP для mysql-_connect. Еще одна вещь, которую я заметил с вашим кодом, почему пользователь должен войти в базу данных? Пользователь базы данных и пользователь приложения должны быть разными по соображениям безопасности.

+0

Благодарим вас за советы, но я отвечу на вопрос Кротца как лучший для меня (жесткий ответ правильный). Также я использую mysqli_connect без базы данных paramater, и он отлично работает. – adi

Смежные вопросы