2011-09-01 254 views
3

我正在和一位朋友一起開發一個小型網站項目。它涉及很多MySQL查詢,所以我創建了一個連接到服務器並選擇我們的數據庫的ConnectToDatabase()函數。硬編碼憑證可以嗎?

它看起來是這樣的:

function ConnectToDatabase() 
{ 
    mysql_connect("db.myawesomehost.com", "Bob", "correcthorsebatterystaple"); 
    mysql_query("USE BobDB;"); 
} 

感覺真不好硬編碼我們的憑據這樣。但我想不出任何其他方式來處理它。把它放在一個常量中並不能解決任何問題,而將它隱藏在某些文本文件中看起來很荒謬。

我應該甚至在意嗎?在大量人員的大型項目中,這是如何處理的?

回答

3

將它分解爲單獨的配置文件。首先,它會讓你至少設置一些變量,比如「DEBUG_MODE」,它將爲你的測試環境轉換你的生產憑證。如果您願意,您可以選擇而不是將單獨的文件保存在版本控制下,或者在代碼存儲庫中保留一個具有僞憑證的文件,以便用戶必須提供自己的憑據而不必訪問全局憑證。

1

典型的rails configuration具有存儲在文件中的用戶名和密碼。

將它們拆分出來似乎是合理的,以便您可以共享代碼而不共享機器的特定信息。這對於有多個用戶開發數據庫的多個開發人員非常有用。

從文件讀取不應該是太大的負擔,特別是一些格式的文件:XML,JSON,YAML,...

1

至於其他的答案表明,大多數大型項目硬碼用戶名和密碼在項目中的某處,通常在配置文件中。我從來沒有見過這樣做,但在特定情況下,未登錄的用戶不需要訪問數據庫,可以對數據庫憑證進行加密並將每個人的密碼用作密碼來解密它們。另一個缺點是,如果用戶忘記了密碼,他們將無法在沒有管理員干預的情況下恢復密碼,並且所有現有用戶都需要重置其密碼。

2

您不應該硬編碼任何憑據。最好的事情是從配置文件讀取並緩存它們。即使在這種情況下,您最好不要以明文形式輸入憑據 - 我們需要在配置文件中加密憑證。在WSO2中,我們從配置文件中讀取的所有憑證都保持加密,並使用稱爲Secure Valut [通用方法]的方法來讀取這些加密憑證,並以明文形式向所需應用程序提供...

謝謝...