我开发的应用程序规定软件应该防止未经授权的访问。为了实现这一点,我使用了基于用户和密码的身份验证,并提供了两个角色 - 标准用户和管理员。
这完全在Python中实现,使用SQLAlchemy与数据库交互,PyQt用于用户界面。
使用brcypt对输入的密码进行哈希处理,然后将数据库中存在的哈希值与相应的用户名(Web服务中使用的标准身份验证技术)进行比较。
成功验证后,名为self.authenticatedUser
的变量包含类User
的SQLAlchemy实例。
此实现的结果是,任何人都可以编辑login方法,直接在数据库中查询具有用户名admin的User
类型的对象,并将返回的User
的SQLAlchemy实例分配给{{ 1}}和bingo黑客可以访问系统。
因为,我正在分发用python编写的这个软件,黑客(或任何类型的程序员)禁用身份验证机制只需几分钟。此外,我不能在此处使用Web服务通过获取登录登录令牌进行身份验证或授权,因为该软件将在air gap的环境中使用。
有没有具体的方法以更安全的方式实现这一点?
答案 0 :(得分:2)
一切只是对代码进行逆向工程的难度,所以这里有一些“保护”它的技术。
答案 1 :(得分:0)
即使有气隙,也可以提供服务。但是,如果您不想这样做,您应该保护您的数据,就好像您为每个用户提供了一个适当的SQL客户端(如pgAdmin或SQL Server Management Studio)。我建议您开始在数据库级别配置角色/用户。
答案 2 :(得分:0)
由于不再采用bcrypt,您可以轻松使用SHA2x。我认为你需要考虑使用SHA2x是出于安全考虑。其次,你可以使用JWT,因为它与python一起工作100%。还要深入了解2因素身份验证,这将是您的安全检查的另一个优势。