我有一个django登录机制,它使用django来存储密码的散列版本。然后我有一个需要通过服务器进行身份验证的桌面应用程序。但是,我不知道如何计算哈希值......
现在,我发布到我的登录页面,客户端的用户名和passowrd(没有散列)这是超级不安全的。 (运行alpha)我知道另一种选择是在发送之前和在接收新的哈希函数之后散列和取消哈希,但我想使用相同的,我想。
答案 0 :(得分:0)
你在想错了。
哈希值通常以<function>$<hash>
使用的<function>
是众所周知的算法
您可以在django
<function>
背后的代码
即使您从客户端发送了哈希值,也可以像明文密码一样拦截它,攻击者可以使用它来访问提供给使用它的客户端的API。
我不太确定这一点,但我认为哈希是用SECRET_KEY
加密的,你需要提供给客户端才能创建哈希值,因此泄漏非常重要的信息
哈希是一种单向函数,你不能在之后解除它。
如果您想添加安全性,请使用基于非对称密码术的SSL或其他方案,例如gnupg或ssh密钥。
答案 1 :(得分:0)
我不知道为什么从桌面应用程序发布未经过修改的密码会比从浏览器这样做更加不安全,这当然是您每次登录网站时所做的事情。这是完全相同的机制,应该以完全相同的方式完成。
在任何情况下,正如yaccz指出的那样,如果不以某种方式让桌面应用程序访问您的密钥,则无法重现散列机制。即使它不能立即访问,只要在客户端的计算机上存在,其安全风险远远大于您想象的安全风险。