簡體   English   中英

如何在客戶端保護socket.io?

[英]How to secure socket.io in client side?

我正在開發使用socket.io的實時Web應用程序。 我擔心的是,在客戶端通過此<script>/socket.io/socket.io.js</script>加載socket.io js文件時,它將io實例公開為全局對象。 現在,如果您打開chrome開發人員工具,現在可以使用以下命令創建到服務器的連接

var socket = io.connect();

現在,任何人都可以發出事件,並將惡意數據發送到正在偵聽客戶端發出的事件的服務器。 我的客戶端代碼中有這個示例:

(function (sio) {
    var socket = sio.connect();
    // some code here...
    // once a user submitted the comment, it will emit an comment:create event to the
    // server
    socket.emit("comment:create", comment);
}(io));

在chrome開發人員工具中,我可以創建一個連接,然后使用一些惡意參數發出同一事件,這些惡意參數可能會使我的應用程序崩潰,例如將null作為第二個參數傳遞。 有辦法防止這種問題嗎?

編輯:我當前的解決方案是在我的客戶端代碼中創建io實例的本地副本,然后將global io對象設置為null以防止建立另一個連接。

當客戶端建立其初始(HTTP)連接並將其存儲為會話變量時,讓服務器端代碼創建某種(相當隨機的)令牌。 要求客戶端在其發送的每個socket.io消息中都包含令牌,並拒絕所有不匹配的消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM