2013-04-21 80 views
0

我幾乎準備好將我的網站轉移到我的網站主機,但在此之前,我希望儘可能保護好網站。我聽說過有關MySQL注入和其他可能面臨的問題,我將如何保護我的網站,MySQL數據庫和它們的文件?保護網站的最佳方法和方法

我將從mysql擴展更改爲mysqli或PDO,您推薦哪些?

+0

可能的重複[如何防止SQL注入PHP?](http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection-in-php) – Quentin 2013-04-21 18:43:38

回答

2

我會親自使用PDO,它比mysqli更好。如果你不知道MySQL的注入是您插入原始數據轉換成這樣的查詢:

$query = "SELECT * FROM users WHERE username='" .$_GET['user']. "' AND password='" .$_GET['password']. "'"; 

未經消毒的輸入,如果用戶輸入管理員的用戶名和' OR '1'='1的查詢變得密碼:

SELECT * FROM users WHERE username='admin' AND password='' OR '1'='1' 

這會導致查詢忽略密碼並以admin身份登錄,只要1 = 1即可。只需使用mysql,您可以使用mysql_real_escape_string($_GET['user'])來轉義任何可能影響查詢的內容,例如數據庫可能理解的「將變成\」。請注意,攻擊者可以做比以管理員身份登錄更糟糕的事情,例如,他們可以使用drop命令刪除整個數據庫結構,並在其後註釋掉代碼,或者實際上會影響您的web服務器,並帶有非常奇怪的shellcode。

的東西,如PDO和庫MySQLi,準備語句告訴數據庫首先應該查詢將是,然後發送,情報,而不是實際上有它在查詢像這樣:

$stm = $pdo->prepare("SELECT * FROM users WHERE username=? AND password=?"); 
$stm->execute(array($_GET['user'], $_GET['password'])); 

編輯:一更多的事情,我認爲仍然可以使用pdo進行mysql注入,但我不知道這是如何工作的,所以我建議做一些更多的研究,看看能否找到任何東西。