2010-01-24 110 views

回答

18

圖像上透明的.gif。您仍然可以通過查看HTML源代碼並查找圖像的實際URL來下載實際圖像。

例如,隨機圖像: http://www.flickr.com/photos/[email protected]/4300352607/

<img style="position:absolute;top:0px;left:0px;display:block" src="http://l.yimg.com/g/images/spaceball.gif" alt="" width="500" height="366"> 

這是在頂部的透明圖像。

<img src="http://farm5.static.flickr.com/4057/4300352607_edcc5a4a9e.jpg" alt="Say It With Flowers by *sido* (back in a few days)." title="" width="500" height="366" class="reflect"> 

這是實際的圖像,它顯示在spaceball.gif下面。

+0

當然,任何有一點經驗的人都可以在10秒內繞過這個,如果他們想要圖像的話。 – alex

0

不要線程轉儲,但在概念上,如果你真的試圖鎖定下載圖像,你可以(我認爲)。使用像asp.net mvc這樣的框架,你可以用一個唯一的鍵標記圖像,將密鑰存儲在內存或其他形式的持久性中,並將其傳遞給客戶機,並將其作爲文件名。在返回結束時,根據對文件的請求,您可以截獲對圖像的請求,並對與其匹配的密鑰執行查找以查找實際文件。一旦你有了這個文件,你就可以將圖像作爲自定義結果返回到適當的元標記中(至少在mvc中,不知道你在其他地方如何做)。然而,在您返回之前,您將結果標記爲正在查看。

這將是服務器上的大量工作,但如果您將Flickr的透明gif技術與其結合使用,則需要大量的努力才能阻止圖像。

這個想法是,一個單一的請求將在普通視圖上發出,任何進一步嘗試直接查看圖像(通過查看源代碼和抓取url)將被阻止。

< ./threadump>

對不起,只是有這個想法,並希望將其添加到已回答的問題(睡眠deprevation和所有的爵士樂)。

+0

任何不尊重緩存規則的客戶端(或插件)仍然允許您從緩存中提取文件。否則,任何具有緩存或鏡像功能的代理都可以保存下來的所有文件。如果您最終可以看到該文件,則可以以其中一種方式保存該文件。 – jsoverson

+0

@jsoverson - 對,你不可能完全阻止保存文件。即使代理上的緩存是靜音的(因爲每個文件請求都有唯一的文件名),該文件仍然由您的機器接收,因此可通過緩存保存。 這不是一個100%的抗性解決方案,但我認爲這種方法在大多數情況下依然可靠。替代方案是一個閃光/ SL應用程序,該應用程序通過使用會話信息向服務器發送遠程請求來顯示圖像。 – Chance