5

ログイン ページで Web コントロール アダプターを使用します。最近、Web アプリケーションで VeraCode を実行しています。次の関数では、CWE80、Web ページ内のスクリプト関連の HTML タグの不適切な中和 (基本 XSS) を取得しました。

rev.ErrorMessage = msg;

以下は、WebControlAdapterExtender クラスの関数です。

static public void WriteRegularExpressionValidator(HtmlTextWriter writer, RegularExpressionValidator rev, string className, string controlToValidate, string msg, string expression)
        {
            if (rev != null)
            {
                rev.CssClass = className;
                rev.ControlToValidate = controlToValidate;
                rev.ErrorMessage = msg;
                rev.ValidationExpression = expression;
                rev.RenderControl(writer);
            }
        }

これを修正する方法について誰か提案がありますか?

4

5 に答える 5

5

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

私はこれを自分で使用したことはありませんが、エラーが発生した場合に ErrorMessage がレンダリングされて表示されると思います。「msg」がいたずらなコード スニペットの場合、これは最終ページにレンダリングされるため、自分自身とユーザーをセキュリティの脆弱性にさらすことになります。

このチート シートのヒントを読んでください: https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

HtmlEncode を使用して、この安全な HttpUtility.HtmlEncode(unencoded); を作成できるはずです。

rev.ErrorMessage = System.web.HttpUtility.HtmlEncode(msg);
于 2014-02-20T16:51:52.340 に答える