[英]Query MySql database with md5 passwords
所以我在數據庫mysql.user中有使用密碼加密方法存儲的用戶(默認情況下,據我所知),而我的database.users具有登錄憑據用戶和密碼(密碼用md5加密)。 問題是我想使用md5加密插入的密碼(從表單),使用戶能夠查詢數據庫。
這些是從表單的$ _POST方法提取的登錄憑據,並使其成為會話,以便在連接時輕松使用:
$_SESSION['utilizator']=$utilizator; //user
$_SESSION['parola']=md5($parola); //password
這是我需要查詢數據庫的每個文件中包含的數據庫連接:
$link = mysqli_connect('localhost', $_SESSION['utilizator'], $_SESSION['parola']);
if(!$link){
die('Unable to connect to the database: ' . mysqli_error($link));
}
盡量不要使用md5,因為它不再安全。 為什么要使用用戶憑據連接到數據庫? 您應該具有專用於此的密碼和用戶,並在需要數據庫連接的任何地方使用它,並且僅當用戶通過登錄名(您正在執行的操作不安全)時,才允許用戶更改數據庫,換句話說,這些用戶憑據僅適用於DB和DB,並且只有您知道。 完成此操作后,您可以將與用戶相關的內容保存在表中:密碼和用戶名如何加密,進行登錄以檢查加密的密碼和數據庫密碼(如果可以),然后進行查詢。
編輯:
由於您將密碼保存在cookie或會話中,因此此方法將有所幫助,因為您可以簡單地存儲加密的密碼並檢查密碼是否與數據庫中的密碼相同。
我建議您在將用戶名和密碼存儲在會話中之前先對其進行清理。 至於mysqli_connect它需要4個參數
<?php $link = mysqli_connect("myhost","myuser","mypassword","mydatabase") or die("Error " . mysqli_error($link));?>
查看php頁面上mysql-_connect的示例 。 我在您的代碼中注意到的另一件事是,用戶為什么必須登錄數據庫? 出於安全原因,數據庫用戶和應用程序用戶必須不同。
MySQL不使用md5存儲用戶密碼(至少默認情況下)。 它使用MySQL PASSWORD()
函數。 如果您使用的密碼未通過md5()
運行,則應該可以使用。
$_SESSION['parola']=$parola; //password
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.