2012-04-23 56 views
9

今天早上我醒來時發現了一個運行KnockoutJS,jQuery和Underscore.js的項目的JavaScript警報。它說「我可以在用戶的​​瀏覽器上運行我選擇的任何JavaScript」。我下載的唯一第三方JavaScript是Typekit,刪除它並不會使其消失。我搜索了我的JavaScript和供應商的JavaScript,並且此字符串不會匹配任何內容。我在我的項目中收到JavaScript警告,我沒有創建,威脅我?

您將如何解決這個問題和/或這是已知發生的事情?

+11

這是注射不是在你的JS,但在你的數據庫:)你沒有消毒用戶的輸入數據 – fl00r 2012-04-23 14:38:54

+1

你是否進口任何廣告或類似的東西?如果沒有真正查看網站,可能無法說出來。 – Pointy 2012-04-23 14:39:01

+7

算你自己幸運,他們對此很好,可能會更糟 – 2012-04-23 14:40:28

回答

14

如果您的應用程序有數據庫,那將是下一個要檢查的地方。我猜測有人發現並利用了一個注入漏洞(未經過消毒的HTML輸入或SQL),並通過數據庫將腳本注入到頁面中。

最後一個地方是查看ruby代碼,看看惡意用戶是否修改了源代碼。

+4

它可能不是sql注入,只是unsanitized html注入。 – JayC 2012-04-23 14:43:49

+1

@JayC - 是在編輯它的過程中,當你評論。由於某種原因,我無法弄清楚什麼叫這個向量。 – 2012-04-23 14:45:22

+0

好的,謝謝你們 – 2012-04-23 14:49:04

0

這聽起來像在您的網站上的黑客企圖。檢查正在使用的正在接收用戶輸入的數據庫,文本文件等。這聽起來像你沒有檢查什麼是發佈到你的服務器我猜。

3

顯然,您需要從用戶那裏接受輸入,然後將其作爲HTML的一部分輸出,而無需引用或消毒。有兩個快速檢查要做:

1)打開源的頁面輸出此警報和內部源搜索警報的確切文本 - 這應該讓你清楚地指出什麼用戶填充字段被泄露。 2)可以肯定的是,搜索由用戶生成的數據庫中的所有其他字段(登錄名,註釋文本等)以查找「script」和「alert」字樣。

未來:在將HTML插入HTML頁面之前,始終清理您的輸入(刪除HTML標記)或將符號轉義爲符合標準的實體,或者通過將其分配給DOM中的文本節點值來明確處理純文本。

相關問題