2017-10-05 121 views
1

我在寫一個c程序,需要登錄到mysql數據庫。我試圖找到一個簡單而安全的方式來存儲用戶名和密碼在程序中。該程序將使https呼叫到MySQL服務器。我只需要能夠包含用戶/密碼數據,我不想將它作爲字符串存儲在程序中。以編程方式登錄到MySQL

任何人都知道一個簡單但安全的方法來做到這一點?

這是在linux系統上。覆盆子pi debian(傑西)。

+0

因此,您不使用MySQL C API,而是向數據庫所在的某個Web服務器發出Web請求? –

+0

如果登錄名和密碼是作爲程序的參數提供的(在'argv []')中? –

+0

問題標題與實際問題不符,您應該找到更好的問題。這是關於安全地存儲憑據。典型的方法是將它們放在具有受限訪問權限的配置文件中。 –

回答

0

您不應該將用戶名/密碼硬編碼到您的二進制文件中,因爲它非常不靈活,您會傾向於而不是如果您每次都必須重新編譯二進制文件,請定期更改此密碼。此外,二進制文件通常不會被特別讀取保護,所以其他用戶可能會獲得您的密碼。

將憑證作爲程序參數傳遞也是一個壞主意,因爲它可能出現在進程列表中,可能會在命令行歷史記錄中保存,可能會被審計工具等記錄下來,因此您的密碼可能會最終在幾個你不想讓它出現的地方。

你最好的選擇是使用一個配置文件與憑據,並給它所需的最小權限,所以你的憑據是安全的。一個簡單的linux庫例如libini,它允許你在部分中存儲鍵/值對,但還有很多其他選項。

另一個非常安全的選項,例如apache用於私鑰密碼和類似的,是指定一個程序(通常是一個shell腳本),它被執行並輸出stdout上的憑據,然後通過解析你的程序。同樣,您必須在此確保只有經過授權的用戶/進程才能讀取或執行該腳本。

+0

非常感謝。是的,同意了。我決定使用配置文件並對文件中的憑證進行加密。我希望在標準c中有一些標準的,簡單的,易於使用的技術來處理這類事情。真的沒有。但是我發現了一些基於openssl的相當簡單的加密工具來幫助我。 – mikekehrli