2012-01-16 128 views
3

我允許用戶嵌入YouTube或任何其他視頻源,只要求他們提交他們收到的嵌入代碼的src即可。然後我將它保存到數據庫中並通過iframe加載它。但是,f有一個來源,例如,src="http://innocent.com/hackingContent.php",那麼我的網站對xss攻擊是否有幫助?通過iframe src進行的xss攻擊

我估計用戶可能有一個src的惡意腳本,只要iframe將源代碼嵌入到我自己的html中,它就會加載。

編輯如果src包含<script type="text/javascript" src="evilScript.js"></script>怎麼辦?雖然我am使用preg_match只是爲了確保它只有一個url。

回答

6

是的,你很脆弱。什麼阻止了不良用戶鏈接到色情片?或者是一個看起來合法並收穫用戶名和密碼的網站。

爲什麼不建立一個你會接受的視頻源白名單...驗證提交的網址是在這些域上,並驗證網址存在。

這樣,人們無法將完全隨機的網址插入到您的內容中。

「白名單」是您將接受的值列表。例如,您的服務器上,當用戶提交一個網址,你會接受來自

http://www.youtube.com ....

正確的東西嗎?因此,您可以列出您將接受的所有網址,然後確保用戶的輸入與列表中的某個項目匹配。如果它不拒絕它。 (根據我們的意思是'開始'或類似的意思 - 顯然不完全匹配)

「黑名單」會相反。你會有一個列表,但它的列表將不允許

白名單== 的事情,你讓
黑名單== 的事情列表,你不允許

+0

你的意思是使用'curl'庫進行URL驗證? – jmishra 2012-01-16 01:29:08

+0

類似的東西。您也可以下載內容並在服務器上處理它,以確保它是合法的。 – hvgotcodes 2012-01-16 01:33:03

+0

說起來,當你說'視頻源的白名單'時,它與iframe不同。這是如何運作的?如果你能在你的答案中解釋它,這將是有幫助的。 – jmishra 2012-01-16 01:52:02

1

不,如果iframe src與調用所述iframe的域不同,您將受到XSS攻擊保護。這是根據相同域起源策略

+3

的iframe'src'可以'JavaScript的名單:...'這將在包含窗口的上下文中運行。 – Esailija 2012-01-16 01:23:47

+0

非常感謝大衛。所以你說如果我通過iframe加載'http:// innocent.com/hackingContent.php'到'example.com/goodContent.php'中,那麼它不是一個問題嗎? – jmishra 2012-01-16 01:23:54

+0

如果他允許任何網址,有人仍然可以通過他的網站顯示惡意內容...對不對? – hvgotcodes 2012-01-16 01:24:07