问题描述
我有一个应用程序,该应用程序从用户那里获取一个csv,将其转换为json并将json文件保存在AWS的S3存储桶中。 然后,我使用来自oracle的Restful服务将数据推送到oracle jde。
用户必须事先经过“批准”才能上传文件-目前是手动过程,但是需要先将其电子邮件添加到S3存储桶中。网络应用会检查电子邮件是否存在于S3中,然后允许文件上传,如果不存在,则文件上传被拒绝。
我目前没有设置任何其他“用户身份验证”。
接下来,为了从外部API获取令牌,我需要向其提供服务帐户的用户名和密码,由于它仍处于开发阶段,因此我将用户名和密码保留在我通过的对象中的服务器端nodejs上进入api调用以获取令牌。
暂时我们不打算让用户登录,也就是说,我如何保护用户名和密码,但仍然能够获得“允许上传的已验证电子邮件”的令牌?
基本上,我认为仅将其保存在可变服务器端节点中不是一个好主意,因此正在寻找另一种将其存储在某个位置并且仍然能够对api进行调用的方法。
1楼
暂时我们不打算让用户登录,也就是说,我如何保护用户名和密码,但仍然能够获得“允许上传的已验证电子邮件”的令牌?
你不能 除非我有误解,否则它们不是“经过身份验证的电子邮件”,而是“预先批准的电子邮件地址”。 您仍然需要验证用户身份以帮助保护应用程序。
那么,我是否仍对硬编码的用户名和密码进行哈希处理和加盐处理并保存到数据库?
您不能对密码进行加盐和哈希处理,因为您打算重用原始密码。 这使您有责任保护密码。 不要玩那个游戏。 许多人将相同的密码用于许多不同的帐户。 您是否要向用户发送电子邮件,让他们知道您存在安全漏洞,并且他们需要重设所有密码?
2楼
基本上,我认为仅将其保留在可变服务器端节点中不是一个好主意
是的,这不是一个好主意。 例如,如果您的服务器死了怎么办? 然后,您将失去该值。 更不用说RAM的额外成本了,因为所有内容都将存储在内存中。
解
- 将凭据存储在数据库中 。 它可以使用SQL或NoSQL,并且服务器可以位于您喜欢的任何位置
注意事项
- 在存储密码之前不要忘记对密码进行哈希处理
- 散列时加一些
- 要验证密码,只需对从客户端获得的密码进行哈希处理,然后将其与数据库中存储的哈希进行比较即可
- 使用HTTPS进行客户端和服务器之间的通信