2016-09-30 44 views
-4

Checkmarx源代碼分析工具將mysql_fetch_array標記爲Stored Cross-Site-Scripting攻擊。爲什麼以及如何解決它是否是真正的bug?以下是報告的描述:Checkmarx源代碼分析工具將mysql_fetch_array標記爲Stored Cross-Site-Scripting攻擊。爲什麼以及如何解決它是否是真正的bug?

abc.php第1行的方法從數據庫中獲取數據,用於mysql_fetch_array元素。然後,此元素的值將在代碼中流動,而不會被正確過濾或編碼,並最終會在abc.php的第1行的方法中顯示給用戶。這可能會導致存儲跨站點腳本攻擊。如何解決這個問題?

回答

3

如果沒有看到實際的代碼流,不可能說出來。

但是,這可能是一個實際的漏洞 - 從數據庫中拉取不可信數據並將其直接發送到網頁輸出而沒有任何清理或編碼的情況下存儲的XSS結果。你的代碼很可能有這個問題。

簡而言之,攻擊者可以通過將有效的惡意數據插入數據庫(通過常規輸入表單)來利用此漏洞。當另一個用戶瀏覽應用程序並訪問這些記錄時,應用程序將該數據拉出並將其注入到受害者的網頁 - 創建腳本注入(又名跨站點腳本)漏洞。
當然,這允許攻擊者控制其他用戶的瀏覽器,通過您的應用程序...

要解決它,只需編碼所有動態輸出,無論數據的來源,將其插入到網頁之前。請注意,這必須根據特定的上下文來完成(例如HTML的HTML編碼,HTML屬性值的屬性編碼,用PHP動態創建JavaScript的JavaScript編碼等)。

欲瞭解更多信息,請參閱this article on OWASP's wiki

相關問題