2012-09-14 31 views
1

我正在構建一項服務,客戶將在其網站上包含腳本。我會根據他們對腳本的使用情況(它連接到我的服務器以使用該服務)爲客戶計費,並且我也有一個iFrame版本。檢查他們的window.location.host檢查腳本是否發佈在他們自己的網站上是否安全?客戶可以選擇指定多個域。是否使用window.location以安全的方式檢查您的腳本是否僅包含在特定網站上?

+0

哦,不,他們可以使用定製的瀏覽器訪問其全球時提供虛假信息屬性... –

+0

或者他們可以編輯腳本(LOL),以便在與您的服務器通信時報告錯誤的URL。你給他們的源代碼。該代碼不受保護。基本上,客戶端是完全不可靠的。 –

+0

那麼,編輯腳本不會對他們有所幫助,因爲用戶不會獲得我的應用提供的內容。不提供虛假主機的瀏覽器會是一個更大的問題,因爲網站所有者無法對此做任何事情,並且使用瀏覽器的用戶無法獲取內容。 – bigblind

回答

1

總的來說,你不應該,閱讀。

我相信,如果您更改window.location,那麼瀏覽器將導航到該頁面。因此,沒有人能夠改變window.location以欺騙你的腳本,而瀏覽器不會導航到新頁面。

但是沒有任何東西阻止任何人下載.js文件並對其進行編輯以刪除您的支票。 (或類似森說,他們可以使用非標準瀏覽器)

(確認這發生在Firefox瀏覽器)

+0

您不必手動下載腳本或使用自定義瀏覽器。在Chrome或Opera中使用檢查器時,可以在頁面加載時跳過Javascript代碼,並跳過我想要的任何部分或更改變量值。 – taz

+0

但是,如果你下載腳本,刪除支票,並將結果託管到另一臺服務器上,它將不再起作用,因爲它無法對其「家庭」服務器進行AJAX調用,因爲它現在位於不同的域。如果最終用戶使用Firebug或Chrome來即時編輯Javascript,那麼當他們設法使服務在一個不應該使用的域上工作時,他們只會自欺欺人(或者換言之,這樣的結局用戶可能只是重新編譯他們的網頁瀏覽器與跨域檢查評論出來實現類似的效果)。 – Celada

0

不是。所有的Javascript運行在客戶端,並且作爲一項規則,您永遠不能依賴客戶端驗證。

相關問題