3

最近<%=、Webコントロールでより頻繁に使用するようになりました。通常、コードビハインドで文字列プロパティを設定してから、フォームに吐き出します。

これは悪い考えですか?

例えば。

コードビハインド:

プロパティ:

public string TheTitle { get; set; }
public string TheBody { get; set; }
public ContentItem TheContent { get; set; }
public string ContentId { 
  get 
    { return "content" + (TheContent != null) ? TheContent.Id.ToSTring() : "0"; }
}

Page_Load:

TheTitle = TheContentItem.Title;
TheBody = TheContentItem.Body;

ページ上:

<div id='<%= ContentID %>'>    

  <h2 class='title'><%= TheTitle ?? "No Title" %></h2>
  <p><%= TheBody %></p>

</div>
4

3 に答える 3

4

これは、データが検証されていない場合にのみ問題になります。

.NET 4の<%: TheBody %>構文を使用することは、信頼できない可能性のあるデータをエンコードするための効果的な方法です。<%= HttpUtility.HtmlEncode(TheBody) %>フレームワークの以前のバージョンでは、同じ効果を使用できます。

于 2010-09-07T21:19:19.947 に答える
2

サイトはXSSに対して脆弱であるため、データがユーザー入力からのものである場合は問題があります。

于 2010-09-07T21:21:07.583 に答える
1

いいえ、それはあなたのコントロールにスコープされるので、問題ではありません*。ケースで競合することを心配する必要はありませんが、IDを使用してサーバーコントロールを書き出すと、問題が発生する可能性があります。

どのように使用しますか、わかりました(*変数に割り当てる前にデータをクリーンアップしたと仮定します)。ID、コントロール、スクリプトなどの重複で問題が発生する場合があることを覚えておいてください...

編集:変数に割り当てる前に使用できます。ASP.NET4を使用している場合は、出力内容に応じて構文HttpUtility.HtmlEncodeを使用できます。<%:これは、aspxを実行するのと同じルールに該当します。問題はありませんが、注意する必要があります。これは、ASP.NETMVCが使用される量でもあります。ビューは文字で書くことができ<%=<%:明らかに、HTML自体で任意のタイプのエンコーディングを使用することは役に立ちません。

于 2010-09-07T21:21:27.727 に答える