2011-09-06 67 views
2

我目前正在開發一個Google Chrome瀏覽器擴展,它通過WebSockets連接到我們的服務器,但害怕有人能夠用假數據來爆炸我們的服務器,所以我們希望實施安全措施以防止其他源連接到服務器。驗證WebSocket連接源

有什麼方法可以將安全措施集成到應用程序和服務器中,以驗證來自Google Chrome擴展程序的連接?

有什麼其他的事情,我們應該知道什麼時候做這種應用程序?任何建議表示讚賞。

回答

3

在WebSocket握手中,有一個「Sec-WebSocket-Origin:」標題(或者最近只是「Origin:」)。這由瀏覽器設置爲加載頁面的原始站點。您可以將服務器配置爲只接受來自網站的網頁的連接。

請注意,這不是一個100%的萬能藥,因爲有人可以編寫欺騙Origin字段的WebSocket客戶端(因此仍需要一些額外的身份驗證方法)。但是,它確保普通人正常運行的瀏覽器無法向您發送虛假數據。

另請注意,普通瀏覽器仍然可能被劫持參與針對您的網站的DDOS攻擊,但無論瀏覽器是否支持WebSocket,這都是事實。所以你仍然想採取正常的措施來防止這種情況發生。

+0

人們甚至可以加載擴展彈出窗口,並從那裏開始假連接。我認爲防止這種情況幾乎是不可能的,因爲您無法在服務器端知道客戶端做了什麼。你不能依賴客戶端JavaScript。 – pimvdb

+0

@pimvdb,即使在Chrome擴展中,您也無法僞造Origin字段。而且您也無法通過Chrome擴展程序進行任意套接字連接,只能使用WebSocket連接。 – kanaka

+0

我的意思是,你可以使用從擴展彈出框內啓動的WebSocket連接來爆炸服務器,並使用該WebSocket連接發送大量數據。但是我誤解了這個問題,因爲它是關於其他來源的,我很抱歉。 – pimvdb