2010-11-18 56 views
1

我有<script src="bla"></script>可以加載到多個域中。 我想知道是否有辦法控制它將被加載的域。 澄清:我的腳本是服務器端渲染,所以基本上,如果請求的域無效,我可以返回空字符串。如何防止在不同域中加載腳本

這是爲了防止其他網站嵌入我的腳本。

謝謝!

回答

2

你可以檢查引用,但這種設置由用戶的網絡瀏覽器,並不是100%可靠。

我不認爲有一種方法可以100%檢測哪個域嵌入了腳本。

+0

我也想不起來。檢查請求標題可能是你可以做的最好的。您還可以檢查除引薦來源之外的其他內容,例如用戶定義的鍵/值。 – Andy 2010-11-18 15:42:11

0

難道你不能只檢查請求來的域嗎?

請參閱http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.host.aspx,您可以通過HttpContext.Current.Request獲取它。

一個例子:

if (HttpContext.Current.Request.Host.Containts("fred.com")) { 
    return; // Or you could do a Response.Write and Flush 
} 

您還可以嵌入腳本的代碼放到一個封閉和簡單地檢查在開始和返回:

(function() { 

    if (location.hostname == "....") return; 

    ...more code here... 

})(); 
+0

JS不是一個選項,因爲它可以很容易地被黑客入侵。 – Himberjack 2010-11-18 15:27:54

+0

你沒有在問題中提到過。檢查請求.NET端的Host屬性 - http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.host.aspx,可以使用HttpContext.Current.Request獲取HttpWebRequest。 – Lloyd 2010-11-18 15:31:53

0

可以使用用於防止盜鏈圖像 - 的mod_rewrite在Apache或IIS上的ISAPI篩選器相同的機制,例如

無論它是否來自另一個域刪除請求,或發送閹割腳本。