2011-08-17 28 views
2

我正在使用Firefox附加組件。在插件中的某一點,它需要聯繫我的服務器,給它一個URL,然後服務器將處理URL(這不是一個快速或簡單的過程),併發回一個鏈接到生成的文件(在Amazon S3上)。但是,由於Firefox附加組件本質上是開放源代碼的,我怎樣才能保護那些對服務器的調用不被惡意人員發現然後被濫用? (我只希望我的插件的用戶能夠打電話給服務器......)Firefox附加客戶端 - 服務器安全

我在考慮使用某種鍵或某種東西,但由於Firefox附加組件都是開放式的,不會真正起作用的源代碼。我也想過編寫一個二進制組件,但我幾乎沒有使用C++的經驗(但也許對於我可以學習的簡單東西) - 但是我怎樣才能保護對二進制組件的調用?另外,我如何保護網絡嗅探器等?是否有可能以某種方式在該二進制組件中包含某種加密,以便網絡嗅探器無法檢測到正在向服務器發送的內容? (我發現這個問題:Client-Server security and authentication但它有點凌駕於我的頭上。)

+0

回想一下包含的問題,它看起來像用戶名/密碼auth可能是一個選項 - 但是...... a)我怎樣才能保護這個免受垃圾郵件的人? b)我如何提交用戶名/密碼幷包含auth? (我可能會找出一個...... https不是太難) – Jakey

+0

您可以編輯問題。 –

+0

你連接到的問題也沒有真正的答案。 –

回答

1

當你分發一個擴展名時,你基本上給人們的車鑰匙,所以很難阻止他們乘車去兜風。最安全的解決方案是您建議的解決方案:使用二進制組件並使用用戶名/密碼或PKI證書對連接進行身份驗證。如果您使用HTTPS,則連接將被加密。這不是完全安全的(二進制組件可以由確定的黑客進行反向設計),但它肯定會阻止偶然的攻擊。但是,請注意,實現,構建和維護二進制組件比JavaScript等效性要困難得多。

另一種方法是在安裝擴展程序時讓用戶通過一次性註冊過程。這甚至可能發生在後臺,並且用戶將在他們將用於隨後與服務器進行通信的最後獲得一些證書(例如PKI密鑰對)。如果你擔心人們過度使用服務器,那麼推測通過擴展來做這件事也不會很好。通過這種方式,您可以跟蹤每個用戶的使用情況(通過分機或不分機)並根據需要進行限制。

1

最後我不認爲你能做的事情很多。你可以在你的加載項中有一個二進制庫,並通過js-ctypes(它比二進制XPCOM組件更容易實現和維護)調用它。但是,沒有任何東西會阻止人們以任何他們喜歡的方式佔用您的擴展並更改其JavaScript邏輯。你可以通過使用這樣的邏輯來使它更難:

  • 客戶端到服務器:「擴展版本1.2.3想要提出請求。」
  • 服務器到客戶端:「把你的chrome:// ...文件,字節M到N,你得到什麼SHA1校驗和?」
  • 客戶端到服務器:「SHA1校驗和是...,請現在處理URL ...」。

但這也是一切,但無法證實,它只是使濫用您的服務有點難。自動註冊也是如此 - 如果您的分機可以註冊,那麼攻擊者也可以創建一個帳戶。