2014-11-24 33 views
0

我上的Node.js應用程序的工作網頁的部分進行加密。它展現了我的一位朋友的藝術。除了一些一般信息和大量的圖片外,它還包括一個聯繫表格,供希望與他聯繫他的工作人員聯繫。我想加密聯繫人頁面以保護通過表單發送的個人數據,但保持頁面的其餘部分未加密以減少頁面的加載時間。
我已經設法創建一個HTTPS服務器來加密我的整個網站。但我只想爲聯繫人頁面加密連接。 有誰知道如何實現?
我的一個解決方案是創建兩個node.js服務器。一臺HTTP服務器和一臺HTTPS服務器,然後運行HTTP服務器上的主頁面和HTTPS服務器上的聯繫頁面。然後到聯繫頁面的鏈接將包含https。類似於:「」。
但不知何故,這不覺得正確的方式,所以我希望有人有更好的解決方案。如何使用Node.js的

謝謝你的幫助!

+4

只需使用SSL在整個網站。沒有理由不這樣做。 – PeeHaa 2014-11-24 23:29:54

+0

通過HTTPS提供頁面服務的開銷可能不值得擔心,並且無論如何都有對整個站點進行例行加密的運動,以增加Web的整體隱私。 – IMSoP 2014-11-24 23:32:21

回答

1

該HTTPS不是普通HTTP少高性能的概念是需要死神話。

  • 在現代系統上,SSL/TLS的開銷是< CPU的1%。事實上,通過像SPDY這樣的優化,您可能會發現TLS安全的連接實際上比普通的HTTP執行更好的。我會願意保證,事實上,你不會注意到任何表現上的負面影響。

  • 另一種常見的誤解是,瀏覽器不通過HTTPS緩存資源。這是錯誤的。默認爲All browsers cache HTTPS content

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

唯一的一個你不可能去所有HTTPS的是中間緩存代理,但說實話,我也不會失去任何睡眠過度,除非你知道你的網站的用戶在網絡上具有相對緩慢鏈接和本地緩存代理。否則,這不是一個真正的問題。

與TLS相關的開銷可以忽略不計。沒有理由不僅僅通過HTTPS提供整個站點。


一旦通過HTTPS提供所有內容,您仍然應該運行發佈永久重定向的HTTP服務器。最容易做的事情將是運行一個單獨的應用程序快捷:

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(); 
}); 
+0

感謝您提供詳細的答案。但是,通過HTTPS建立連接不需要更長的時間,因爲使用了更復雜的握手協議。這也是加載時間的一部分,每次頁面重新加載時都會發生,對吧? – 2014-11-25 23:18:04

+0

的確,最初的TLS握手會增加一些開銷(最壞的情況下*,額外往返兩次),但這隻需要在每個會話中發生一次。在HTTP保持活動和[SSL會話恢復](http://vincent.bernat.im/en/blog/2011-ssl-session-reuse-rfc5077.html)之間,瀏覽器不需要**在每一頁重新加載完整的握手。此外,如果您使用SPDY,則只要該選項卡打開,TCP連接就會保持打開狀態。 (* - 正常的TLS握手是2次往返; [False Start](https://tools.ietf.org/html/draft-bmoeller-tls-falsestart-00)可以減少所需的行程次數。) – josh3736 2014-11-25 23:38:02