簡體   English   中英

限制對文件的訪問

[英]restricting access to files

我目前正在MVC3上開發圖片存儲,並且有一個問題如何限制對圖像的訪問。 如果我將圖像插入HTML虱子<img src="/ImagesFolder/image0001.jpg"> ,它將正確顯示,但是在瀏覽器中寫完整路徑的任何人也將獲得該圖像。 我不願意允許它。 一種方法是將圖像作為base64字符串嵌入,但僅適用於小圖像,我有大圖像。

我看到了創建圖像訪問操作的建議,並使用了類似<img src="/GetImage?ID=1123"> ,但是在該GetImage頁面上,我仍將使用直接路徑方法還是base64方法? 並以第一種方式將imagefile的完整路徑轉換為父視圖,並且仍然可以在圖片屬性中看到?

有沒有辦法在<img src="">使用System.Drawing.Image或其他任何方式? 你知道樣品嗎?

一種方法是將所有圖像放入http服務器未發布的路徑。 這樣,用戶就沒有直接路徑可以進入瀏覽器。

腳本本身在服務器上,因此它們可以訪問此路徑。 您的圖片訪問方法應該是一個腳本,該腳本返回實際數據並將其自身標識為正在為jpeg提供圖片/ jpeg的數據。 這樣,如果有人通過您設計的腳本之外的其他方式訪問GetImage方法,則可以(通過引用或其他方式)檢測到它,並且不返回任何內容。

我認為您提到的“圖像訪問操作”解決方案是最容易實現的解決方案。 例如,GetImage腳本可以檢查您在應用程序中設置的cookie,以便只有第一次訪問您網站的人才能接收圖像。

現在,如果您想防止人們在訪問您的網站通過在瀏覽器中鍵入URL來顯示圖像,這將變得更加棘手,並且我認為沒有一個簡單的解決方案。 您可能會檢查Referer HTTP標頭,以查看請求是否與您的網站有關(因為將URL放入URL欄中時Referer將為空,但是當<img src=...>包含該圖像時,它將包含頁面的URL。 <img src=...> ),但是該解決方案有一個缺點,因為它將阻止瀏覽器不發送Referer標頭(通常出於隱私原因;這不是一個非常廣泛的配置,但是會發生這種情況)根本看不到您的圖像。 第二個可能的缺點是,除非您可以配置服務器為服務器提供一些不允許緩存的標頭,否則人們可能會通過輸入URL來查看已在瀏覽器中緩存的圖像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM