如何使用node.js加密网页的各个部分

时间:2014-11-24 23:27:22

标签: node.js ssl encryption https

我正在开发node.js应用。它呈现了我的一个朋友的艺术。除了一些一般信息和许多图片,它还包括一个联系表格,供想要联系他的人了解他的工作。我想加密联系页面以保护通过表单发送的个人数据,但保持页面的其余部分不加密,以减少页面的加载时间。
我已经设法创建了一个加密我整个网站的HTTPS服务器。但我只想为联系页面建立加密连接。 有谁知道如何实现它?
我的一个解决方案是创建两个node.js服务器。一台HTTP服务器和一台HTTPS服务器,然后运行HTTP服务器上的主页面和HTTPS服务器上的联系页面。然后,指向联系人页面的链接将包含https。类似于:" https://www.domain.com/contact"。
但不知怎的,这并不是正确的方式所以我希望有人有更好的解决方案。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

HTTPS的性能低于普通HTTP的概念是一个需要消亡的神话。

  • 在现代系统上,SSL / TLS的开销是< 1%的CPU。实际上,通过像SPDY这样的优化,您可能会发现TLS安全连接实际上比普通HTTP执行更好。我愿意下注,实际上,你没有注意到任何负面的性能差异。

  • 另一个常见的误解是浏览器不会缓存通过HTTPS传递的资源。这是错误的。默认为All browsers cache HTTPS content

  • Google now ranks all-HTTPS sites higher比普通HTTP。

通过使用所有HTTPS而丢失的唯一一件事就是中间缓存代理,但说实话,除非您知道您的网站的用户在网络上,否则我不会失去任何睡眠。相对较慢的链接和本地缓存代理。否则,这不是一个真正令人担忧的问题。

与TLS相关的开销可以忽略不计。没有理由不通过HTTPS为您的整个网站提供服务。


通过HTTPS提供所有内容后,您仍应运行发出永久重定向的HTTP服务器。最简单的方法是运行一个单独的Express应用程序:

var http = express();

http.use(function(req, res){
    res.redirect(301, 'https://mydomain.com' + req.url);
});

http.listen(80);

您的HTTPS服务器还应启用HSTS

app.use(function(req, res, next) {
    res.set('Strict-Transport-Security', 'max-age=31536000');
    next();
});