Que fait Microsoft.Security.Application.Encoder.UrlPathEncode?

c# html-agility-pack

Question

J'ai trouvé un exemple brillant d'assainisseur HTML utilisant HTMLAgilityPack. Dans le code, la classe Microsoft.Security.Application.Encoder est utilisée:

// AntiXss
a.Value = Microsoft.Security.Application.Encoder.UrlPathEncode(a.Value);

Je ne trouve pas l'assemblage contenant cette classe, je préférerais ne pas avoir une autre dépendance dans mon projet et l'assainisseur fonctionne sans cette ligne. Cependant, la suppression de cet appel peut laisser une faille de sécurité dans le code.

Afin de décider pour ou contre l’utilisation de cet assemblage, je voudrais savoir: que fait réellement cette méthode?

Réponse acceptée

Vous pouvez jeter un oeil sur le code source

Depuis le code source de la méthode

/// <summary>
/// URL-encodes the path section of a URL string and returns the encoded string.
/// </summary>
/// <param name="input">The text to URL path encode</param>
/// <returns>The URL path encoded text.</returns>
[System.Diagnostics.CodeAnalysis.SuppressMessage(
    "Microsoft.Design",
    "CA1055:UriReturnValuesShouldNotBeStrings",
    Justification = "This does not return a full URL so the return type can be a string.")]
public static string UrlPathEncode(string input)
{
    if (string.IsNullOrEmpty(input)) 
    { 
        return input; 
    } 

    // DevDiv #211105: We should make the UrlPathEncode method encode only the path portion of URLs. 
    string schemeAndAuthority; 
    string path; 
    string queryAndFragment; 
    bool validUrl = UriUtil.TrySplitUriForPathEncode(input, out schemeAndAuthority, out path, out queryAndFragment);

    if (!validUrl) 
    { 
        // treat as a relative URL, so we might still need to chop off the query / fragment components 
        schemeAndAuthority = null; 
        UriUtil.ExtractQueryAndFragment(input, out path, out queryAndFragment); 
    } 

    return schemeAndAuthority + HtmlParameterEncoder.UrlPathEncode(path, Encoding.UTF8) + queryAndFragment; 
}

Vous devrez creuser plus profondément pour accéder à toutes les pièces en mouvement dans l'encodage de l'URI. En général, je vous recommande de regarder dans les tests unitaires pour voir ce que l'on attend du composant, mais il n'y a pas de tests sur la classe Encoder à première vue :(



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi