2010-12-07 85 views
3

我有一個從其他子網站鏈接的文件。如何可靠地識別網站

文件:http://site.com/file.img

網站鏈接到它<img src="http://site.com/file.img"></img>

B網站鏈接到它<img src="http://site.com/file.img"></img>

我需要可靠地識別這些網站已訪問的文件,但我知道, $_SERVER['HTTP_REFERER']可能被欺騙。我還有哪些其他方式可靠地確認申請人網站?通過IP,讓他們註冊一個IP?不確定。設置一個API密鑰?有什麼選擇?

+1

獲取服務器的IP不起作用,因爲圖像被提供給客戶端。 – GWW 2010-12-07 03:46:51

+0

我們在這裏需要更多的信息 - 正在使用這些圖像的上下文是什麼?遠程站點是否始終有權顯示它們?根據上下文,答案將從「私鑰簽名」到「不可能」。 – 2010-12-07 03:55:25

回答

5

如果一個網站僅連接到一個文件中,「網站」本身永遠不會真正訪問你的形象。相反,觀看該網站的客戶端將對該圖像提出請求。

因此,您將視客戶端發送的信息而定,而這些信息完全超出了您的控制範圍,並且根本不可靠。如果您有機會在客戶端上設置某種獨特的cookie,您可以以某種方式使用它來擴展標識,但即使這樣做也不可靠。

沒有100%可靠的解決方案。

2

獲取引用鏈接是最好的,你可以做,而無需進入複雜的領域。

如果你不介意的複雜,然後閱讀:建立自己的Web服務器來服務file.img到網站A和網站B,然後要求網站A和網站B設置代理配置在其終端這將代表他們的訪問者檢索file.img

例子:

訪問者到網站上加載包含像<img src="http://websiteA.com/file.img"/>(注參考的網站,而不是您的網站)的圖像標籤的頁面。客戶相應地從WebsiteA.com請求file.img。網站A被配置爲代理請求路徑/file.img到您的服務器,http://site.com/file.img。您的網站驗證它實際上是網站A請求的圖像,然後將其提供給網站A的代理。網站A然後將其提供給訪問者。

基本上,這使網站A和B的痛苦,給你一個性能打擊,並且還需要你的部分進一步的配置。但我想這會滿足你的要求。