2008-10-27 82 views
6

我在我的網站上有一個富文本編輯器,我試圖防範XSS攻擊。我認爲我幾乎處理了所有事情,但我仍然不確定如何處理圖像。現在,我使用下面的正則表達式來驗證圖像的URL,這我假設將阻止內嵌的JavaScript XSS攻擊:從圖像中跨站點腳本

"https?://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+" 

我不知道是怎麼開這讓我對XSS攻擊來自什麼遠程圖像。是否將外部圖像鏈接到嚴重的安全威脅?

我唯一能想到的是URL輸入引用了一個資源,它返回「text/javascript」作爲它的MIME類型,而不是某種圖像,然後執行該javascript。

這可能嗎?我應該考慮是否存在其他安全威脅?

+2

我也建議ha.ckers.org小抄:ha.ckers.org/xss.html – 2008-10-27 19:04:34

回答

4

另一件值得擔心的事情是,您可以輕鬆地將PHP代碼嵌入圖像中並在大多數情況下進行上傳。攻擊必須能夠做的唯一事情就是找到一種包含圖像的方法。 (只有PHP代碼會被執行,其餘的只是回顯)。檢查MIME類型不會對你有幫助,因爲攻擊者可以很容易地上傳一個正確的前幾個字節的圖像,然後是任意的PHP代碼。 (HTML和Javascript代碼也是如此)。

+0

我不會讓用戶上傳圖片。由於諸如您提到的原因,用戶只能鏈接到其他網站上的圖像。 – 2008-10-27 19:06:53

+0

不是一個簡單的文件名過濾器可以防止這種情況嗎? – AaronSieb 2008-10-27 19:44:13

1

在這種情況下,請看周圍的上下文:用戶是否只提供一個URL?在這種情況下,只需驗證URL語義和MIME類型即可。如果用戶也需要輸入某種類型的標籤,則必須確保它們不可操縱,以便執行其他任何操作,然後顯示圖像。

2

如果最終查看器位於密碼保護區域,並且您的應用程序包含根據GET請求發起操作的Url,則可以代表用戶發出請求。

實例:

  • SRC = 「http://yoursite.com/deleteuser.xxx?userid=1234」
  • SRC =「http://yoursite.com/user/delete/1234 「
  • SRC =」 http://yoursite.com/dosomethingdangerous」