从一个广泛的话题开始,我有一个具体的问题(也许有点“锡纸帽子”)。
这个问题是关于保护客户机和服务器之间的后请求中传输的数据的最佳实践的。背景是我正在开发的Web应用程序,以了解有关Node和express js的更多信息。
尽管我使用的示例是用于登录凭据的,但实际上,它实际上可能是有关在过帐请求中从表单提交到快递服务器的任何信息。
示例: 客户端通过客户端上的按钮单击事件提交表单数据。我在前端使用vue,但这是一个通用问题。在客户端页面上,我还在使用(在异步函数内部):
const resp = await axios.post("http://someurl.com/login", {client:email, pw:pw});
在网络标签上的chrome开发人员工具中,我可以看到请求有效负载。在示例中,它看起来像:
{client:"some email address", pw:"some password"}
传输已经加密/编码的有效载荷会更好吗?然后在服务器上对其进行解密/解码吗? 为了传输敏感信息,使用签名的cookie更好吗?
我应该解决的所有计划是将let'sEncrypt用于HTTPS。
仅依靠HTTPS来保护此类有效负载是否合理?
作为参考,在快速服务器上,对密码进行哈希处理,并将其与数据库中的哈希版本进行比较。我已经阅读过有关Helmet和csurf的文章,并打算在最终产品中使用它们。 this答案中有很多重要信息。这真是太棒了,它在讨论HTTPS over HTTP的重要性。
任何其他参考/想法/实际考虑都值得赞赏。
答案 0 :(得分:0)
使用HTTPS将加密客户端和服务器之间的有效负载。 具有足够知识的用户可以规避前端上的任何javascript处理,因此所有前端主要是为了促进更好的用户体验。密码确认检查,正确填写的字段等。
您的主要安全来源将是您的最终LetsEncrypt HTTPS证书以及在服务器端应用的哈希和加盐。当您正确推测HTTP时,以明文形式发送密码是很糟糕的。作为警告,即使有人使用多种技术来严重破坏证书颁发机构(我相信根CA仍然应该脱机)或修改用户PC上的受信任证书,甚至HTTPS都可能失败。
尽管这确实取决于黑客所需的工作量与潜在回报之间的关系,因此,您越努力保护,就需要越多的安全性,而对于任何潜在的黑客而言,试图绕过安全性的努力就变得不值得特定站点。 (当然不包括信誉技巧)
希望这会有所帮助。