2013-02-18 127 views
4
db = MySQLdb.connect(host ="host", 
     user="user", 
     passwd="pass", 
     db="dbname") 
    q = db.cursor() 

所以,這是我的代碼塊,我只是想知道,這將是多麼容易反向工程,並確實mysqldb發送認證通過明文?連接到遠程服務器時的MySQLdb安全性?

我創建通過Internet連接到MySQL服務器的程序,會有人能夠得到我的憑據?

會有人能夠得到我的服務器的登錄信息?

+0

您可以閱讀MySQL的文檔這一節,其中規定它使用的認證機制:http://dev.mysql.com/doc/internals/en/connection-phase.html#分組協議:: AuthSwitchRequest。通常情況下,Web服務器與MySQL服務器緊密連接(調用本地MySQL服務器或位於私有網絡中的MySQL服務器),因此假設服務器的網絡部分是安全的,安全性應該不成問題。 – Raptor 2013-02-18 02:20:34

+0

它連接到遠程mysql服務器... 沒有websever,它是一個獨立的SQL服務器。 – AB49K 2013-02-18 02:25:23

+1

好吧,我*想*我有一個解決方法,這個應用程序只使用SELECT語句,我只是要在SQL服務器上設置權限,所以用戶連接只能運行SELECT,因此數據不能編輯。 – AB49K 2013-02-18 02:28:55

回答

1

MySQL服務器可以配置爲使用SSL來保護連接。有關配置服務器的一些信息,請參閱here以獲得有關使用SSLdb連接的MySQLdb的示例和here

1

在你的榜樣的用戶名,密碼和其他數據上面會以明文的形式發送。

這裏有兩個相關的問題Python MySQLDB SSL ConnectionCA SSL parameter for Python MySQLdb not working, but key does?

如果你有機會改變配置MySQL服務器,我們可以幫助配置SSL。

MySQL支持加密連接。您連接的MySQL服務器必須配置爲使用SSL,並且客戶端在連接時必須添加SSL參數。

Using SSL connections

shell> mysql --ssl-ca=ca-cert.pem ... 

您可以測試,如果你要連接到支持該服務器的SSL我加入--ssl-ca=ca-cert.pem。 ca-cert.pem:將此用作服務器和客戶端的--ssl-ca的參數。 (如果使用的話,CA證書必須在兩邊都是相同的。)

MySQL SSL Example描述了從MySQL設置MySQL並與SSL連接的過程。