2013-08-17 52 views
2

所以我在數據庫mysql.user中存儲了用戶密碼加密方法(這是默認情況下我所知道的)和我的database.users用戶和密碼(密碼用md5加密)。 問題是我想用用戶能夠查詢數據庫來使用md5加密插入的密碼(從表單)。使用MD5密碼查詢MySql數據庫

這些是從形式的$ _ 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)); 
} 

回答

3

儘量不要使用md5導致它不再安全。 你爲什麼要用用戶證書連接到數據庫?您應該擁有一個密碼和用戶,並且在需要數據庫連接的任何地方都可以使用該密碼和用戶,並且只有在用戶通過登錄(您正在做的事情並不安全)時允許用戶更改數據庫,換句話說,那些用戶憑據僅適用於DB和DB,只能由您知道。 這樣做後,你可以保存在一個表中的用戶相關的東西:傳遞和用戶名加密你想要他們,做一個登錄,檢查加密通過和數據庫通過,如果沒關係,然後進行查詢。

編輯:

既然你wnat存儲在cookie或會話這種方法將幫助,因爲你可以簡單地存儲加密的密碼,並檢查它是否是一樣的一個在你的數據庫的通行證。

+0

謝謝,不知道是不是使用特定的用戶進行mysql連接。在我看來,我認爲最好是獲取用戶憑據來訪問數據庫,而不是將mysql連接以純文本方式放入我的數據庫連接php文件中。 – adi

+0

只有服務器和編寫代碼的服務器纔會看到PHP:D,並且在最糟糕的情況下,服務器上會有黑客入侵的人,這種情況下數據庫最有可能受到攻擊。 – Krotz

1

MySQL不使用md5來存儲用戶密碼(至少默認情況下)。它使用MySQL PASSWORD()函數。如果您使用密碼而不通過md5()運行它,它應該可以工作。

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

它起作用,因爲我用它沒有MD5,但問題是,我想存儲cookie用戶登錄,我不舒適將它作爲純文本存儲在cookie中。 – adi

2

我會建議你在將用戶名和密碼存儲在會話中之前修剪和清理用戶名和密碼。至於mysqli_connect 它需要4個參數

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

看看在mysql-_connect PHP頁面上的例子。另一件我已經注意到的代碼,爲什麼用戶必須登錄到數據庫?出於安全原因,數據庫用戶和應用程序用戶必須有所不同。

+0

感謝您的建議,但我會選擇Krotz的答案作爲最適合我的答案(強硬的答案也是適當的)。此外,我使用mysqli_connect時沒有數據庫參數,它工作正常。 – adi