Domanda

Recentemente ho iniziato ad usare <%= più spesso nei miei controlli Web. In genere io impostare le proprietà di stringa nel codice dietro e poi sputare nel form.

E 'una cattiva idea?

ad es.

Codice Dietro:

Proprietà:

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;

A pagina:

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

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

</div>
È stato utile?

Soluzione

Si tratta di un problema solo quando i dati non viene convalidato.

Utilizzando la sintassi <%: TheBody %> .NET 4 di è un modo efficace per codificare i dati potenzialmente non attendibili. Nelle versioni precedenti di quadro, è possibile utilizzare <%= HttpUtility.HtmlEncode(TheBody) %> nello stesso senso.

Altri suggerimenti

E 'male se i dati provengono da un input dell'utente come il vostro sito sarà vulnerabile a XSS.

No, non è un problema * perché sarà ambito al vostro controllo. Non devi preoccuparti di nulla in conflitto nel tuo caso, ma se si stesse scrivendo i controlli del server con ID si potrebbe incorrere in problemi.

Come il tuo usarlo, ok (* supponendo aver pulito i dati prima di assegnarlo alla variabile). Basta tenere a mente ci sono momenti in cui si può essere un problema con la duplicazione di ID, comandi, script, ecc ...

Modifica Prima di assegnare al vostro varible si potrebbe usare HttpUtility.HtmlEncode o se si utilizza ASP.NET 4 è possibile utilizzare la sintassi <%: a seconda di ciò che si sta l'output. Questo autunno sotto le stesse regole come farlo un aspx, è ok, ma è solo bisogno di stare attenti. Questo è anche quanto di ASP.NET MVC viene utilizzato. Le viste possono essere literred con <%= e <%: Ovviamente utilizzando qualsiasi tipo di codifica su una qualsiasi HTML stessa non sarebbe utile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top