openerp連接數據庫的用戶名和密碼可以命令行給出, 也可以設置在配置文件中, 如下例所示:
db_user = openerp
db_password = laoliu |
因爲它使用了明文的密碼, 因此就存在一定的安全隱患。 將配置文件中的密碼進行加密, 可以在一定程度上提高系統的安全性
openerp在啓動時讀取配置文件,將配置文件或或命令行中設置的參數保存到了對象configmanager的options之中。因此, 我們可以在配置文件中對某項數據加密, 然後openerp的程序讀取options時, 對加密的數據進行解密即可。
加密和解密的方法有許多種,我們必須採用可逆的方法,比如Base64編碼:
加密過程: 我們用notepad++打開配置文件, 選擇密碼, 然後點擊菜單 插件 | MIME Tools | BASE64 Encode, 連續點擊數次。記錄好點擊的次數(比如,3次)。
解密過程: 修改tools目錄下的config.py
將文件最末尾的def __getitem__(self, key)改爲如下內容
def __getitem__(self, key):
res=self.options[key]
if (key == "db_password") :
for i in range(3): # 這裏的3是連接做base64編碼的次數
res=res.decode("base64")
return res
|
在config.py文件的頭部, 還需要加入如下一行, 導入base64編碼需要的庫
base64編碼方式很容易被踩猜到, 特別是末尾有等於號的時候, 因此它很容易被破解。本文只是舉例說明修改openerp的方式, 在生產實際中應該使用更安全的加密和解密方式。
爲了安全起見, 修改後的config.py文件也應該刪去, 只留下編譯後的config.pyc文件。