2008-11-27 64 views
9

我運行一個小的瀏覽器MMO,我有一個問題,即一對夫婦的用戶腳本嵌入到他們的個人資料圖片,並用它們來使攻擊對用戶說,和我一般遊戲。有沒有辦法來防止這種情況發生,還是我需要開始阻止人們使用他們自己的自定義圖像?腳本嵌入在圖像

如果有幫助的任何,它是在PHP/MySQL的完成。

+0

關於攻擊本質的更多具體細節將有很大幫助..有幾個人的圖片漏洞利用知道.. – paan 2008-11-27 01:46:06

+0

特別是,配置文件圖像來自哪裏?用戶必須提供一個URL ,還是上傳文件? – Rob 2008-11-27 02:12:58

+0

用戶提供他們自己的圖片和網址,當人們看着他們時,東西變壞。 – watchwood 2008-11-27 02:56:22

回答

0

一些用於驗證圖像誠信最常見的做法包括檢查MIME類型,或二進制讀取圖像的前幾個字節。雖然這些不是最好的,但值得嘗試去阻止其中的一些。

3

嘗試讓GD處理這些圖像。如果它拋出錯誤,你知道你有問題。由於圖片上傳是一種相對較少的操作,因此不應該導致加載問題進行某種任意的操作。

0

你在談論的問題,即IE瀏覽器將解釋在它的HTML標籤的圖像作爲一個HTML頁面,從而允許從用戶提交的圖片的HTML和腳本注入?

(該缺陷是,IE瀏覽器將做到這一點,即使你告訴它的內容類型是圖像/類型。微軟造成了無盡的安全性災害有這種企圖是「有益的」。)

如果是這樣,通常的解決方案是從不同的主機名提供用戶提交的圖像,其中一個主機名無法訪問cookie或在主服務器上爲您的Web應用程序提供腳本。

一定要鎖定您的虛擬服務器,從而使圖像服務器和應用服務器均只能從一個特定的主機名(和應用程序服務器不能通過IP地址訪問)。

這將解決跨站點腳本問題。您可能仍然存在需要處理的跨站點請求僞造請求,但這是一個不同的問題,可以在沒有映像包裝的腳本注入的情況下利用。

6

最有可能的是他們給你一個鏈接到一個腳本,建立圖像並返回它的動態,沒有任何東西不允許用戶使用外部圖像,你可以做它關於它,防止它的一個選擇是下載圖像並將其存儲在服務器上,而不是鏈接到外部圖像。

- 我決定提供一個樣本
該圖像動態創建,我給的網址是:http://unkwndesign.com/profilePic.png
alt text http://unkwndesign.com/profilePic.png
現在 ,profilePic.png是請求時提供的文件夾其中的index.php,使用GD,越來越的SO標誌,並對其施加你的IP地址,在這裏很清楚我不是在登錄電子這個或任何其他數據的index.php文件的來源是:

<?php 
$image = imagecreatefrompng("http://stackoverflow.com/Content/Img/stackoverflow-logo-250.png"); 
$font_size = 12; 
$color = imagecolorallocate($image, 0,0,0); 
ImageTTFText ($image, $font_size, 0, 55, 35, $color, "arial.ttf",$_SERVER['REMOTE_ADDR']); 
header("Content-type: image/png"); 
imagepng($image); 
imagedestroy($image); 
?> 

由於我返回的圖像,適當的擴展名和適當的mime-t ype沒有辦法檢測到我在做什麼。 如果服務器已經下載我的映像並將其存儲在本地,那麼IP地址將是服務器的IP地址,這將破壞這樣做的樂趣,並可能證明足以阻止這種行爲。