Fortify--Cross-Site Scripting:DOM


1、簡介:

    Cross-Site Scripting:DOM:基於DOM的XSS

  a、起初,這個例子似乎是不會輕易遭受攻擊的。畢竟,有誰會輸入導致惡意代碼的 URL,並且還在自己的電腦上運行呢?真正的危險在於攻擊者會創建惡意的 URL,然后采用電子郵件或者社會工程的欺騙手段誘使受害者訪問此 URL 的鏈接。當受害者單擊這個鏈接時,他們不知不覺地通過易受攻擊的網絡應用程序,將惡意內容帶到了自己的電腦中。這種對易受攻擊的 Web 應用程序進行盜取的機制通常被稱為反射式 XSS。

  b、Fortify 安全編碼規則包將就 SQL Injection 和 Access Control 提出警告:當把不可信賴的數據寫入數據庫時,數據庫將出現問題,並且會將數據庫當作不可信賴的數據的來源,這會導致 XSS 漏洞。如果數據庫在您的環境中是可信賴的資源,則使用自定義篩選器篩選出包含 DATABASE 污染標志或來自數據庫源的數據流問題。盡管如此,對所有從數據庫中讀取的內容進行驗證仍然是較好的做法

  c、https://www.cnblogs.com/meInfo/p/9004535.html

·    問題     

    應用程序的客戶端代碼從document.location、document.URL、document.referrer或 其 他 任 何攻擊者可以修改的瀏覽器對象獲取數據,如果未驗證數據是否存在惡意代碼的情況下 ,就將其動態更新到頁面的DOM 節點,應用程序將易於受到基於DOM 的XSS攻擊。 例如:下面的JavaScript代碼片段可從url中讀取msg信息,並將其顯示給用戶。  

 

    var url=document.URL;

    document.write(url.substring(url.indexOf("msg=")+4,url.length );  

 

    該段腳本解析URL,讀取msg參數的值,並將其寫入頁面。如果攻擊者設計一個惡意的URL,並以JavaScript代碼作為msg參數,那么Web瀏覽器就會像顯示HTTP響應那樣執行 該代碼,應用程序將受到基於DOM 的XSS攻擊。

 

    解決辦法:

  基於DOM 的X SS是將用戶可控的JavaScript數據輸出到HTML頁面中而產生的漏洞,為了避免基於DOM 的XSS攻擊,避免將用戶控制的數據直接輸出到DOM或腳本中執行。如果不能避免,則應進行嚴格的過濾  。

  

2、https://www.cnblogs.com/phoenix--/articles/2158202.html   (建議閱讀)

  XSS解決方案

  常用的防止XSS技術包括:

  (1)與SQL注入防護的建議一樣,假定所有輸入都是可疑的,必須對所有輸入中的script、iframe等字樣進行嚴格的檢查。這里的輸入不僅僅是用戶可以直接交互的輸入接口,也包括HTTP請求中的Cookie中的變量,HTTP請求頭部中的變量等。

  (2)不僅要驗證數據的類型,還要驗證其格式、長度、范圍和內容。

  (3)不要僅僅在客戶端做數據的驗證與過濾,關鍵的過濾步驟在服務端進行。

  (4)對輸出的數據也要檢查,數據庫里的值有可能會在一個大網站的多處都有輸出,即使在輸入做了編碼等操作,在各處的輸出點時也要進行安全檢查。

  (5)在發布應用程序之前測試所有已知的威脅。

 

3、Fortify報錯例子: 

  問題:Cross-Site Scripting:DOM:  data數據從數據庫取出后,直接傳入了function方法中使用,未進行校驗

  

 

 

  解決方法:對data數據進行校驗,后傳入function中

  最直接的驗證方法就是:將function中的data換成別的字符,fortify就檢測不出這個問題了。

  例如:換成fata就不會報錯

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM