La versione 4.2.x era motivata da una vulnerabilità di sicurezza rilevata precisamente nel disinfettante HTML. Maggiori informazioni su questo fatto:
Tuttavia, sembra che oltre a fissare la vulnerabilità del disinfettante è stato cambiato per essere molto più aggressivi al punto di essere quasi inutilizzabile. C'è un problema segnalato su questo fatto nel sito WPL CodePlex (GetSafeHtmlFragment replacing all html tags).
Se il tuo problema riguarda solo il tag <br>
e vuoi attaccare con il disinfettante AntiXSS, puoi implementare una brutta soluzione alternativa al pre-processing dell'input e quindi post-processare il risultato del disinfettante.
Qualcosa di simile (codice solo a scopo illustrativo):
static void Main(string[] args)
{
string input = "<br>Hello<br/>World!";
input = EscapeHtmlBr(input);
var result = Sanitizer.GetSafeHtmlFragment(input);
result = UnescapeHtmlBr(result);
Console.WriteLine(result);
}
const string BrMarker = @"|br|";
private static string UnescapeHtmlBr(string result)
{
result = result.Replace(BrMarker, "<br />");
return result;
}
private static string EscapeHtmlBr(string input)
{
input = input.Replace("<br>", BrMarker);
input = input.Replace("<br />", BrMarker);
input = input.Replace("<br/>", BrMarker);
return input;
}
fonte
2012-07-08 15:57:06
Grazie ... che era quello che stavo "sperando" per. Tuttavia, sembra che la libreria AntiXSS sia praticamente inutile ora. Volevo usarlo su un'area di testo WYSIWYG ... sta pulendo troppo. ; ( – Chaddeus
Per aggiungere, sembra che se si desidera la funzionalità meno aggressiva, è necessario utilizzare 'HTMLsantizationLibary.dll' che fa parte di AjaxControlToolkit - http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/HTMLEditorExtender/ HTMLEditorExtender.aspx – RemarkLima