我正在寻找无需通常访问服务器即可对用户进行身份验证的想法。任何在客户端验证用户的半安全方式都是可以接受的。
我想在一个js文件中存储一些加密的秘密,然后只有拥有正确代码的用户才能解密它,并且可以输入正确的代码或将其存储在cookie或其他东西中。听起来不错,还是有其他想法?
我正在寻找无需通常访问服务器即可对用户进行身份验证的想法。任何在客户端验证用户的半安全方式都是可以接受的。
我想在一个js文件中存储一些加密的秘密,然后只有拥有正确代码的用户才能解密它,并且可以输入正确的代码或将其存储在cookie或其他东西中。听起来不错,还是有其他想法?
我想在一个js文件中存储一些加密的秘密,然后只有拥有正确代码的用户才能解密它,并且可以输入正确的代码或将其存储在cookie或其他东西中。
你所要求的绝对是可能的,但我不确定它是否真的对你有用。
您需要使用像PBDFK2(“基于密码的密钥派生函数 2”)这样的密钥派生函数。用户输入密码,然后 KDF 将密码转换为密钥。然后,您使用密钥来操作像 AES 这样的强对称密码(并确保使用像 CBC 这样的安全操作模式)。这种方法相当安全,但它仍然容易受到键盘记录器(操作系统级别和浏览器级别)和内存状态检查的攻击。
这里重要的一点是用户必须输入密码才能首先加密秘密。您不能向用户发送秘密,然后要求输入密码。用户可以使用密码来加密消息,然后让系统稍后要求使用相同的密码以供将来访问。
或者,您可以自己选择密码,生成密钥和加密数据,然后将您选择的密码(连同加密数据)发送给用户以安全地记住或存储。
实际上,CryptoJS是一个支持 AES 和 PBKDF2 的 JavaScript 实现。
也许您可以存储密码的哈希值并加密合理的应用程序 JS 源代码,以便在用户使用正确的密钥“认证”时对其进行评估?
请参阅这篇有关 Google 处理 javascript 的方法的文章。使用加密的 javascript 字符串源代码,您是客户端安全的吗?
看看客户端javascript的oauth。在 Google 上搜索“仅限 oauth 客户端”。
例如,这个 - https://developers.google.com/accounts/docs/OAuth2UserAgent