2014-02-21 16 views
0

我們最近運行的VeraCode,但是失敗了以下方法:如何解決網頁中與腳本相關的HTML標籤的不當中和問題?

static public void WriteTargetAttribute(HtmlTextWriter writer, string targetValue) 
    { 
     if ((writer != null) && (!String.IsNullOrEmpty(targetValue))) 
     { 

      if (targetValue.Equals("_blank", StringComparison.OrdinalIgnoreCase)) 
      { 
       string js = "window.open(this.href, '_blank', ''); return false;"; 
       writer.WriteAttribute("onclick", js); 
       writer.WriteAttribute("onkeypress", js); 
      } 
      else 
      { 
       writer.WriteAttribute("target", targetValue); 
      } 
     } 
    } 

的失敗的VeraCode在最後一行: 「writer.WriteAttribute(」 目標 「targetValue);」

我能做些什麼來解決它?

感謝的

回答

1

的問題是,「targetValue」被傳遞到你的方法,但不存在這種中被使用之前 - 字符串得到用途「原樣」,所以可能包含腳本造成傷害。有一個很好的描述解釋了這個以及爲什麼它是一個問題:http://www.veracode.com/images/pdf/top5mostprevalent.pdf

因爲'targetValue'會呈現給網頁,所以有人可以輸入腳本,它會在最終頁面上呈現。如果'targetValue'是一個頑皮的代碼片段,那麼您將自己和您的用戶暴露給安全漏洞。

有提示這個小抄讀:https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

你應該能夠使用的HTMLEncode,使這個安全HttpUtility.HtmlEncode(targetValue);

writer.WriteAttribute("target", System.web.HttpUtility.HtmlEncode(targetValue));

+0

謝謝你,Al。我會閱讀材料 – piterskiy

相關問題