0

最近 VeraCode を実行しましたが、次のメソッドに失敗しました。

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("target", targetValue);"

修正するにはどうすればよいですか?

ありがとう

4

1 に答える 1

2

問題は、「targetValue」がメソッドに渡されていることですが、使用される前にこれが中和されていないことです。文字列は「そのまま」使用されるため、害を及ぼすスクリプトが含まれている可能性があります。これとそれが問題である理由を説明する適切な説明があります: http://www.veracode.com/images/pdf/top5mostprevalent.pdf

「targetValue」は Web ページにレンダリングされるため、最終ページにレンダリングされるスクリプトを誰かが入力する可能性があります。「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));

于 2014-02-22T11:32:10.757 に答える