我開發的應用程序規定軟件應防止未經授權的訪問。爲了實現這一點,我使用了基於用戶和密碼的身份驗證,並提供兩種可用的角色 - 標準用戶和管理員。在Python PyQt桌面應用程序中安全地認證和授權用戶
這是完全用Python實現的,通過使用SQLAlchemy與數據庫PyQt進行用戶界面交互。
使用brcypt對輸入的密碼進行散列,然後將其與相應用戶名(Web服務中使用的標準認證技術)的數據庫中存在的散列進行比較。
成功驗證後,名爲self.authenticatedUser
的變量包含類User
的SQLAlchemy實例。
這個實現的結果是任何人都可以編輯的登錄方法簡單,直接在數據庫中查詢User
類型的對象與用戶名admin和User
返回SQLAlchemy的實例分配給self.authenticatedUser
和賓果黑客可以訪問系統。
因爲我分發這個用python編寫的軟件,黑客(或任何類型的程序員)要關閉身份驗證機制只需幾分鐘。此外,我不能在這裏使用Web服務通過獲取登錄登錄令牌進行身份驗證或授權,因爲該軟件將在具有air gap的環境中使用。
是否有任何具體的方式來實現這個以一種非常安全的方式?
- 使用本地MySQLDatabase
- 使用安全(比較難於逆向工程很可能是合適的)機制。
您可以考慮將[PyInstaller](http://www.pyinstaller.org/)作爲操作系統二進制文件進行分發。 SQLAlchemy和PyQt位於受支持的軟件包列表中。 PyInstaller甚至支持PyCrypto。 –