2012-02-20 63 views
2

我們有一個在第三方網站上運行的「小部件」,即任何使用我們的服務註冊並嵌入JavaScript的人。在第三方網站上運行的安全JavaScript

目前,我們使用JSONP所有通信。我們可以通過使用iFrame和一些魔術來檢測加載事件,從而安全地簽署人員並創建帳戶。 (從本質上講,我們要等到iFrames源代碼重新指向客戶端域,然後再從其標題中讀取成功值)。

因爲我們正在JSONP運行,我們可以使用瀏覽器的HTTP cookies如果用戶登錄檢測。

然而,我們在轉變我們的系統運行的實時性和在網頁的過程中插座。我們仍然使用相同的身份驗證方法,但我們不一定會使用JSONP進行其他調用。相反,這些電話將在網頁套接字(使用庫王菲)

我怎樣才能確保這種情況發生?潛在的安全漏洞是,如果有人從現有網站上覆制JavaScript,改變它,然後讓人們訪問他們的網站。我認爲這會破壞我最初的想法,即在登錄時發回安全令牌,因爲惡意JavaScript能夠讀取它,然後使用它執行經過身份驗證的操作。

我是更好保持我的安全操作運行在普通JSONP和我在WebSockets的更新?

回答

4

Websocket連接僅在開始握手期間纔會收到cookie。唯一可以訪問websocket連接的網站是打開它的網站,因此如果您在認證後打開連接,那麼我認爲您的安全性將與您當前的JSONP實施相媲美。

這並不是說你JSONP實現是安全的。我不知道它不是,但是您是否檢查了您的JSONP請求的引用來確保它們確實來自登錄的同一個第三方網站?如果沒有,您已經從嵌入您的JavaScript的其他網站的安全問題。

在任何情況下,有XSS漏洞的第三方也將是a very big problem,但想必你已經知道了。

0

無論您是通過瀏覽器打開網頁套接字握手期間發送的cookie(如果有的話,什麼餅乾)不是由WS規範指定。這是瀏覽器供應商的責任。

一個WS連接可以打開到任何網站,不僅是最初服務JS的網站正在進行連接。但是,瀏覽器必須在WS開放握手中將「起源」HTTP標頭設置爲最初服務於JS的那一個。然後服務器可以自由接受或拒絕連接。

你可以即產生JS一個隨機字符串,存儲客戶端,並讓這再加上客戶端IP參與計算的WS的身份驗證令牌..