2010-09-14 108 views
21

我想要一些你認爲是使用PHP連接到MySQL數據庫的最安全的方式。目前我正在做的是一個實用PHP文件,我將其包含在所有其他PHP文件的頂部。實用PHP文件是這樣的:用PHP安全地連接到MySQL的最佳方式

<?php 
    if(!defined('IN_PHP')){ 
     die("hackerssss"); 
    } 
    $mysql_host = "localhost"; 
    $mysql_user = "root"; 
    $mysql_pass = "root"; 
    $mysql_db = cokertrading; 
?> 

有什麼建議嗎?

+15

「安全」是什麼意思?抵禦什麼? – 2010-09-14 15:47:03

+2

你缺少報價:'$ mysql_db =「cokertrading」'(除非它是一個常量)。 'defined('IN_PHP')'check在這裏並不是很有用,因爲你只定義了變量,而不是立即連接。 – Lekensteyn 2010-09-14 15:51:20

+1

@daniel root/root用於在本地機器上進行測試duh – Tim 2010-09-14 15:51:31

回答

24

建議:您應該永遠不要以root身份運行;創建另一個帳戶併爲其提供您網站所需的「最少」權限。

+0

好的謝謝你的幫助 – Tim 2010-09-14 15:53:13

+10

+ 1爲「最低特權」的方法。 – 2010-09-14 16:00:45

+3

+1用於糾正使用分號;根不是一個好主意。 – 2010-09-16 22:28:14

6
  • 定義一對正確的登錄憑證而不是「root/root」(將用戶名更改爲別的,並選擇複雜的密碼);

  • 如果可能的話,請在防火牆級別限制對數據庫的訪問權限到localhost,或者如@Scott在註釋中所述,將mySQL設置爲僅偵聽來自127.0.0.1的連接。如果兩者都不可行,請限制mySQL級別的訪問。 ("username"@"localhost"

+0

防火牆規則並不是一個壞主意,但它們是不必要的。你可以通過改變mysql配置來完成相同的操作,只在127.0.0.1上監聽 – 2010-09-14 15:51:33

+0

除非cokertrading在文件的其他地方定義爲常量。 – UnkwnTech 2010-09-14 15:52:01

+0

@Scott好點。 @Unknwntech燁,這是不確定的。刪除。 – 2010-09-14 15:52:22

4

因爲PHP腳本是服務器端 - 即它們被解析的服務器上,僅輸出發送到瀏覽器 - 你正在做的,這是完全安全的方式。

人們能夠獲得您的用戶名和密碼的唯一方法是實際入侵您的服務器並查看源代碼 - 在這種情況下,無法(以PHP方式)防範此問題。

5
  1. 請記住,任何能夠讀取該文件的人都會知道您的SQL密碼:將其設置爲不可讀取。
  2. 不要以root身份登錄:爲每個應用程序創建一個用戶。
  3. 請勿使用「root」作爲您的root密碼。
  4. 不要把密碼給大家。
8

我相信沒有人提到MYSQLIprepared statements然而,您可能會鎖定您的密碼和數據庫連接之間的距離,但是那如果我可以簡單地輸入登錄表單';DROP TABLE users;--最終是徒勞的。

檢查http://en.wikipedia.org/wiki/SQL_injection瞭解我在說什麼。

+1

謝謝你。我需要做更多關於sql注入的閱讀。 – Tim 2010-09-14 17:20:49