HttpUtility.HtmlAttributeEncode è considerato per gli attributi di virgolette singole?

1

MSDN :

The string result from the HtmlAttributeEncode method should be used only for double-quoted attributes. Security issues might arise when using the HtmlAttributeEncode method with single-quoted attributes.

Qualcosa che ho trovato nelle mie ricerche diceva che HttpUtility.HtmlAttributeEncode fa non codifica apostrofi. Tuttavia, l'ho provato per me stesso e lo sta sfuggendo (con ' ). Questo può essere visto anche nella fonte di riferimento :

Non sono riuscito a trovare alcun post ufficiale sul blog in merito alla modifica di questo comportamento. Qualcuno può chiarire lo stato attuale?

    
posta bayotop 07.08.2015 - 12:43
fonte

1 risposta

1

Sperimentalmente, HttpUtility.HtmlAttributeEncode() NON sostituisce gli apostrofi quando si utilizza .NET Framework 3.5 (e versioni precedenti). Li sostituisce con il framework 4.5. Quindi si deve supporre che il comportamento sia cambiato; questo può essere visto confrontando la documentazione per .NET 3.5 :

The HtmlAttributeEncode method converts only quotation marks ("), ampersands (&), and left angle brackets (<) to equivalent character entities.

con la documentazione per .NET 4.5 :

The HtmlAttributeEncode method encodes characters appropriate for insertion into an HTML attribute value.

Si noti che anche la nuova documentazione dice ancora che la quotazione è sicura solo per valori di attributo con doppi apici. La mia ipotesi è che mentre l'intento è ancora quello di scegliere solo gli attributi con doppia citazione, gli sviluppatori Microsoft hanno finalmente capito che la maggior parte degli sviluppatori non legge la documentazione e utilizzerà HtmlAttributeEncode() per gli attributi a virgoletta singola, quindi aggiungere una escape per gli apostrofi era un modo carino, formalmente compatibile con le versioni precedenti per rendere il mondo leggermente migliore.

    
risposta data 07.08.2015 - 14:39
fonte

Leggi altre domande sui tag