我正在一個用戶可以發佈筆記的網站上工作。我正在考慮允許用戶通過向圖像提供url來發布圖像(即不通過表單上傳)。允許用戶通過URL上傳圖片時應該注意什麼?
但是,我已經瞭解到,這可以用來做某種黑客行爲,例如,用戶可以粘貼一個不是圖像的url,所以當頁面加載時,GET請求將會被該網址。
我想知道:
1.可以做什麼其他惡意的事情,我該如何阻止它們?
2.是否有一個簡單的方法(只是使用JavaScript)來檢查一個url是否是一個圖像?
我正在一個用戶可以發佈筆記的網站上工作。我正在考慮允許用戶通過向圖像提供url來發布圖像(即不通過表單上傳)。允許用戶通過URL上傳圖片時應該注意什麼?
但是,我已經瞭解到,這可以用來做某種黑客行爲,例如,用戶可以粘貼一個不是圖像的url,所以當頁面加載時,GET請求將會被該網址。
我想知道:
1.可以做什麼其他惡意的事情,我該如何阻止它們?
2.是否有一個簡單的方法(只是使用JavaScript)來檢查一個url是否是一個圖像?
當允許用戶上傳任意文件到服務器時(這是),有很多問題需要關注。
首先,你需要確保該文件是一個圖像,而只能作爲一個圖像(即不是作爲一個腳本執行)
其次,圖像不能過大或作爲訪問對用戶或服務器的DoS拒絕
第三,您需要確保以安全的方式保存映像,以便用戶不能覆蓋敏感文件。
第四,提供與您的主要內容不同的所有上傳內容。第五,確保您使用ImageMagick或GD處理圖像以刪除圖像中的任何不需要的數據。第五,確保您使用ImageMagick或GD處理圖像以刪除圖像中的任何不需要的數據。請記住,圖像文件可以用作不僅僅是可見數據的容器。
六:注意路徑注射,LFI,RFI等攻擊
七:不要依賴於擴展到告訴你的圖像是什麼類型的文件。自己檢查一下。
不過,我已經學會了,這可能是 用來做某種黑客攻擊,爲 例如,用戶可以粘貼網址 不是一個圖像,所以當頁面加載 ,一GET請求將發送到 那個url。
用戶是否要粘貼指向圖像的鏈接或從自己的計算機上傳文件?
- 還有什麼黑客可以用這個做什麼?
讓我們把這種方式:用戶上傳任意文件到您的服務器
- 有一種簡單的方式處理(使用JavaScript)來檢查的網址是 圖像?
不是真的,它不會幫助。你想要做檢查的事情
列表服務器端供您閱讀:
http://www.scriptygoddess.com/archives/2004/10/19/gifs-that-execute-a-php-script/
還有更多的問題...
如果嵌入一個未知的網址作爲圖片在HTML中,對這個URL的獲取請求將以任何方式完成,獨立於它真的是一個圖像或不是。
的問題是,這是否可以做一些傷害,無論是
通過您自己的服務器代理它可以確保沒有憑據(讀取cookie)與請求不一致的XSRF發送。代理還可以幫助您解決混合內容問題。你是對的,儘管通過同一個來源代理它會打開一整罐蠕蟲。因此,在代理內容時,您需要使用不被任何存儲敏感數據或其內容受信任的頁面共享的域。 – 2011-06-06 16:58:24
查看http://www.thinkfu.com/blog/gifjavascript-polyglots有關違反「只能作爲圖像訪問(即不作爲腳本執行)」的示例。 – 2011-06-06 16:26:11
不要在不可信輸入上使用ImageMagick。瀏覽器的圖像解碼器已經比ImageMagick強化了緩衝區溢出和各種其他攻擊。您可以通過chroot jailing和syscall sandboxing或以其他方式運行虛擬化的特權來減輕風險。我對GD沒有經驗,所以不能評論它對不可信圖像的硬化程度。 – 2011-06-06 16:29:53
重新配藥。有些東西可能會DOS瀏覽器成爲通過網絡即時傳送的有效映像。例如。包含自己的禁止服務的onload腳本的SVG圖像。 – 2011-06-06 16:32:44