【发布时间】:2018-03-25 09:23:07
【问题描述】:
我开发的应用程序规定该软件应防止未经授权的访问。为了实现这一点,我使用了基于用户和密码的身份验证以及两个可用的角色 - 标准用户和管理员。
这是完全用 Python 实现的,使用 SQLAlchemy 与数据库交互,使用 PyQt 用户界面。
使用 brcypt 对输入的密码进行哈希处理,然后将其与数据库中相应用户名的哈希值进行比较(Web 服务中使用的标准身份验证技术)。
身份验证成功后,名为self.authenticatedUser 的变量包含User 类的SQLAlchemy 实例。
此实现的结果是任何人都可以编辑登录方法,以简单地使用用户名 admin 直接在数据库中查询 User 类型的对象,并将返回的 User 的 SQLAlchemy 实例分配给 self.authenticatedUser 和宾果游戏黑客可以访问系统。
由于我正在分发这个用 python 编写的软件,因此黑客(或任何类型的程序员)只需几分钟就可以禁用身份验证机制。另外,我不能在此处使用 Web 服务通过获取登录登录令牌进行身份验证或授权,因为该软件将在具有 air gap 的环境中使用。
是否有任何具体的方法可以以更安全的方式实现这一点?
- 使用本地 MySQL 数据库
- 使用安全(相对难以进行逆向工程可能是合适的)机制。
【问题讨论】:
-
您可以考虑将其与PyInstaller 作为操作系统二进制文件一起分发。 SQLAlchemy 和 PyQt 在支持的包列表中。 PyInstaller 甚至支持 PyCrypto。
标签: python security authentication sqlalchemy desktop-application