これが愚かな質問であれば私を許してください。私は明示的に答えを見つけることができませんでした。XSSから保護するために、Bind()またはEval()は自動的にHtmlEncodeを実行しますか?
は、私はほとんど私のASPXページにバインド()やeval()を使用しない、代わりに次の構文を使用します。
<asp:Label id="lblFirstName" runat="server" Text='<%# Microsoft.Security.Application.AntiXss.HtmlEncode(DataBinder.Eval(Container.DataItem, "FirstName").ToString()) %>
が、私はこのAを始めた(これは、RepeaterコントロールにItemTemplateにしていると仮定します)長い時間前に、それは疑問に思ったことはありませんでしたが、今ではこれが過度のことかもしれません。そして今、私はすべての場所で、この構文を使用するCMSを使用しています:
<asp:Label id="lblFirstName" runat="server" Text='<%# Bind("FirstName") %>
私はバインド()または評価を(使用している場合ので、私は、基本的には、思ったんだけど)ランタイムは自動的に出力をHtmlEncodeのでしょうか?私はいつも不必要なコーディングをしていますか?
これはgoobdに似ていますが、DataBindingコンテキストに表示されているように '<%# %>'ブロックではなく、 '<%= %>'(Response.Write相当)のように見えます。真のデータバインドされたコントロールに相当する省略形はありますか? – David
気にしないでください。ここでそれを4.5で見つけました:http://www.asp.net/vnext/overview/aspnet/whats-new#_Toc318097391私は正しい方向に向いてくれてありがとう! – David
David申し訳ありませんが、私も答えを更新しました –