我有一个应用程序,该应用程序使用angularjs 1.5作为前端,而.NET框架作为后端。在我的应用程序中,我必须将用户名和密码存储在来自前端的数据库中。要求是:
- AngularJS将加密密码并将其发送到后端
- 在后端,加密密码将存储在数据库中。
- 在后端代码中,有一个我们必须调用第三个的地方派对Web API,必须通过用户名和解密的密码形式出于身份验证目的。
简而言之,前端应加密密码,后端应具有解密的能力。
我已经分析了许多用于安全交易密码的技术。
- 哈希:它是安全传输密码的最佳方法问题是,我们不能将哈希广告密码转换为其原始表格。根据我的要求,我必须将哈希广告密码转换为其原始形式。
- 对称算法使用相同的键进行解密和加密。因此,必须将密钥共享到前端和后端。如果我们将双方的密钥值进行硬编码。 ,这不是一个好方法。
- 不对称算法使用公共和私钥因此,加密和解密。因此,我认为这比两种技术都更加安全。因为有公众的入侵者钥匙不能解密密码。
我是与Angularjs进行加密和解密处理的新手。我的查询是关于密钥处理的。我们如何安全地将密钥存储在前端和后端,而不是在代码中对其进行核对编码。是否有任何安全的分享这些密钥的方法。哪种算法最适合我的需求?(根据我的分析,我发现不对称是此要求的更好选择(。
不确定这是否仍然与您相关,但是来了。这些是您要问的很高的水平和广泛的问题,所以我为您提供一些一般指导。
我肯定会使用不对称的加密。我很可能会选择诸如RSA OAEP之类的内容,该内容每次都会在随机填充时每次在同一输入上产生不同的密码文本。这样,攻击者就不会从他可以拦截的密码文本中学到太多。
关键交换是一个更棘手的话题,因为您的最终用户软件很可能会在浏览器中运行(是Angular应用程序(。处理此操作的一种方法可能是将您的公钥包装在可以在浏览器中验证的证书中。
您还需要考虑许多其他攻击和方面。例如,如何保护系统免受重播攻击以及如何旋转钥匙,同时仍然满足您的可用性要求。涵盖此答案中的所有主题不可能太宽,所以我把它留在这里。